我有 3 个表:pics
、folders
和 pics_by_folders
。
图片
pic_ID | name | info
文件夹
folder_ID | name | info
文件夹图片
folder_ID | pic_ID
我试图返回满足 x、y、z 要求的所有图片
,但前提是它们包含在满足 j、k、l 要求的文件夹中。我希望我能以一种有意义的方式解释这一点。我目前的说法是:
SELECT * FROM pics WHERE
pic_ID = 'x' AND
pics.name = 'y' AND
pics.info = 'Z'
JOIN pics_by_folder as pbf ON
pbf.pic_ID = pics.pic_ID
JOIN folders WHERE
folder_ID = 'j' AND
folders.name = 'k' AND
folders.info = 'l'
ON
folders.folder_ID = pbf.folder_ID
这不起作用,我认为它与语句的顺序有关,或者可能 sql 不允许 "JOIN x WHERE ..."
语句。无论哪种方式,任何帮助将不胜感激。
最佳答案
语法错误!!!.
SELECT
*
FROM pics
JOIN pics_by_folder as pbf ON pbf.pic_ID = pics.pic_ID
JOIN folders ON folders.folder_ID = pbf.folder_ID
WHERE folder_ID = 'j' AND
folders.name LIKE 'k' AND
folders.info LIKE 'l' AND
pic_ID LIKE 'x' AND
pics.name LIKE 'y' AND
pics.info LIKE 'Z'
一些注释:
请始终指定您想要在结果集中包含哪些列。否则你会感到困惑,因为你不知道结果集中会有多少列。
folders.name LIKE 'k'
相当于 folders.name = 'k'
如果您想要精确匹配,请使用folders.name ='k'
,否则使用通配符运算符%
,如下所示:
folders.name LIKE '%k%'
关于php - 编写一条sql语句根据其他表中的列查询一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38639281/