2012-05-13 11 views
0
$query = "SELECT DISTINCT t.task_id, e.url,e.error_id, p.page_rank, e.scan_status, e.url_is_route,e.url_is_route,e.forbidden_word,e.google_host_fail,e.google_cache_fail,e.google_title_fail,e.robots_noindex_nofollow,e.xrobots_noindex_nofollow,e.title_fetch_warn,e.h1_fail,e.h2_fail,e.h3_fail,e.h1_warn,e.h2_warn,e.h3_warn 
       FROM `error_report` AS e 
       INNER JOIN task_pages AS t ON t.task_id=e.task_id 
       INNER JOIN `pages` AS p ON p.page_id=t.page_id 
       WHERE t.task_id=" . $this->task_id ; 

私は、クエリがt.task_idによってのみ区別されるようにします。問題はそれ以上のフィールドを追加するときです。クエリはもう区別できません。 t.task_idによってのみ別のものを選択する方法はまだありますか?mysql distinct文が動作しない

代わり distinct使用の

答えて

3

group by

$query = "SELECT t.task_id, e.url,e.error_id, p.page_rank, e.scan_status, e.url_is_route,e.url_is_route,e.forbidden_word,e.google_host_fail,e.google_cache_fail,e.google_title_fail,e.robots_noindex_nofollow,e.xrobots_noindex_nofollow,e.title_fetch_warn,e.h1_fail,e.h2_fail,e.h3_fail,e.h1_warn,e.h2_warn,e.h3_warn 
      FROM `error_report` AS e 
      INNER JOIN task_pages AS t ON t.task_id=e.task_id 
      INNER JOIN `pages` AS p ON p.page_id=t.page_id 
      WHERE t.task_id=" . $this->task_id 
      ."group by t.task_id"; 
+0

nice solution..thanks .... –

1

あなたが複数のフィールドを追加する場合は、IIRC GROUP BYを使用する必要があります。

追加のフィールドとなるはずです。 MINMAXなどです.MySQLはより容認され、各フィールドの最初の値を示します(ただし、確かに明らかにそうではありません)。

+0

しかし、分、最大などの用途はありません。 –

+0

@DmitryMakovetskiydこれは問題ありませんが、基本的に他のデータベースエンジンには移植できません;-) –