交叉引用2个表并获得结果

时间:2011-06-28 21:31:29

标签: php mysql drupal select

我有2个mysql表

其中一个包含与城市关联的用户ID列表。即“劳德代尔堡”,但用户ID实际上位于名为entity_id的列中,而该城市位于名为field_city_value的字段中。

此查询带回“劳德代尔堡”中的所有entity_ids

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

然后此查询返回用户标识的邮件

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

我想结合2并获取与劳德代尔堡相匹配的所有用户ID的所有邮件。

4 个答案:

答案 0 :(得分:0)

使用连接语句。

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

答案 1 :(得分:0)

我们可以假设users.uidfield_data_field_city.entity_id相同吗?如果是这种情况,您将需要查看使用MySQL joins

答案 2 :(得分:0)

您可以尝试子选择:

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

答案 3 :(得分: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'