多表,多WHERE和SELECT MySQL查询

时间:2016-02-23 15:40:05

标签: php mysql

所以,我试图使用我试图拼凑的查询从4个表中选择一些数据。

SELECT *
FROM cards
LEFT JOIN cards_viewers ON cards.card_id = cards_viewers.card_id
  (SELECT *
   FROM folders
   WHERE folder_id = cards.card_folderID)
  (SELECT user_firstName,
          user_lastName,
          user_avatar
   FROM user_data
   WHERE user_id = cards_viewers.user_id)
WHERE cards_viewers.user_id = '.$u_id.'
ORDER BY cards.card_lastUpdated DESC

基本上,查询会根据表user_id中的user_data从四个表中选择数据。我试图最初从表cardscards_viewers中获取所有数据,并继续使用此数据从其他表(user_data和{{1}中选择值})。

查询错了,我知道。我已经学会了大部分基本的MySQL,但我仍然在努力处理更复杂的查询,比如我现在要编写的查询。我可以用什么查询来选择我想要的数据?

将任何文档链接到部分查询对于帮助我学习如何在将来创建查询非常有用,而不仅仅是依赖于StackOverflow。

非常感谢。

1 个答案:

答案 0 :(得分:1)

您不需要“MULTI-WHERE”但需要多个连接,您只需要继续进行连接,直到获得所需的表格为止。
这是一个例子:

SELECT *
FROM cards LEFT JOIN cards_viewers 
ON cards.card_id = cards_viewers.card_id
LEFT JOIN folders
ON folders.folder_id = cards.card_folderID
LEFT JOIN user_data
ON user_id = cards_viewers.user_id
WHERE cards_viewers.user_id = '.$u_id.'
ORDER BY cards.card_lastUpdated DESC  

要自定义您想要获取的字段,只需更改*字段的名称,注意ambiguous column naming
有关详细信息,请查看MySql Joins。希望这有助于你:)