2011-06-28 29 views
1

私は2つのmysqlテーブルを持っています2つのテーブルを相互参照して結果を得る

1つは都市に関連付けられたユーザーIDのリストを持っています。すなわち "Fort Lauderdale"ですが、ユーザーIDは実際にはentity_idという列にあり、都市はfield_city_valueというフィールドにあります。

このクエリは、「フォート・ローダーデール」

SELECT entity_id 
FROM `field_data_field_city` 
WHERE `field_city_value` LIKE 'Fort Lauderdale' 

にentity_idsのすべてに戻しますと、このクエリは、ユーザID

SELECT mail 
FROM `users` 
WHERE `uid` =42 

のメールを思い出させる、私は2を組み合わせたいとFort Lauderdaleに一致するすべてのユーザーIDのメールをすべて取得します。

+0

は聖なる –

答えて

0

joinステートメントを使用します。相続人

http://dev.mysql.com/doc/refman/5.0/en/join.html

テストされていないことをやっての長い道ったらしい..このボックスにはMySQLのアクセス。

SELECT field_data_field_city.entity_id,users.mail FROM users,field_data_field_city WHERE field_city_value LIKE 'Fort Lauderdale' AND field_data_field_city.entity_id = users.uid 

それとも

SELECT * FROM field_data_field_city city INNER JOIN users user on city.entity_id=user.uid 
+0

をhttp://dev.mysql.com/doc/refman/5.0/en/join.html参加動作するはずですそれはうまくいった。あなたはダー男君のおかげで! – kit

+0

心配しないで、たくさんの方法で参加できます。 – Eddie

0

我々はusers.uidfield_data_field_city.entity_idと同じであると仮定することはできますか?その場合は、あなたはあなたが副選択を試すことができますMySQL joins

0

を使用してに見たいでしょう:

SELECT mail FROM users WHERE uid IN (SELECT entity_id FROM field_data_field_city WHERE field_city_value LIKE 'Fort Lauderdale') 
0

これはそれを行う必要があります。あなたはそれを重複または類似のために少し変更したいかもしれませんが、この単純なクエリは

SELECT u.mail 
FROM users u 
    LEFT JOIN field_data_field_city fdfc ON fdfc.entity_id = u.uid 
WHERE fdfc.field_city_value LIKE 'Fort Lauderdale' 
関連する問題