1

私はtbl_customersテーブルを持っています。(多くの人のように)

2番目のテーブルがあります: tbl_customers_tags

この表では、単一のクライアントレコードに対して無制限のキーワード/タグを保存します。列の構造は次のとおりです。

`tbl_customers_tags`

+-------------+---------------------+------+-----+---------+----------------+
| Field       | Type                | Null | Key | Default | Extra          |
+-------------+---------------------+------+-----+---------+----------------+
| ID          | int(11) unsigned    | NO   | PRI | NULL    | auto_increment |
| customerid  | int(11) unsigned    | NO   | MUL | NULL    |                |
| tagid       | mediumint(5)unsigned| NO   |     | NULL    |                |

したがって、特定のtagidを持つクライアントレコードを探すことによって、いくつかのレポートをプルする必要があります。重複しています。これが私の現在のクエリステートメントです:

SELECT  c.firstname, c.lastname, c.datecreated  
FROM `tbl_customers` c 
LEFT JOIN `tbl_customers_tags` ctags ON c.customerid = ctags.customerid 
WHERE ctags.tagid IN(2,3,15) 

customerid1つが複数のtagidレコードに関連付けられている場合に、重複を返さない方法はありますか?

4

3 に答える 3

0
SELECT  distinct c.firstname, c.lastname, c.datecreated  
FROM `tbl_customers` c 
LEFT JOIN `tbl_customers_tags` ctags ON c.customerid = ctags.customerid 
WHERE ctags.tagid IN(2,3,15) 
于 2013-01-06T19:00:56.643 に答える
0

重複を本当に気にしない場合は、DISTINCTキーワードを使用できます。また、他のテーブルに依存LEFT OUTER JOINする句があるため、を実行する必要はありません。WHEREこのようなもの:

SELECT  DISTINCT c.firstname, c.lastname, c.datecreated  
FROM `tbl_customers` c 
JOIN `tbl_customers_tags` ctags 
ON c.customerid = ctags.customerid 
WHERE ctags.tagid IN (2,3,15) 
于 2013-01-06T19:02:55.953 に答える
0

これを試して

SELECT  c.firstname, c.lastname, c.datecreated  
FROM 'tbl_customers' c 
where exists
( select 'x' from tbl_customers_tags where customerid = c.customerid and
tagid IN(2,3,15)
) 

タグテーブルにレコードがある顧客のみに関心がある場合は、左ではなく完全結合を実行してみませんか?

于 2013-01-06T19:12:45.497 に答える