php - 编写一条sql语句根据其他表中的列查询一个表?

标签 php mysql

我有 3 个表:picsfolderspics_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/

相关文章:

php - 当我上传文件时整个网站崩溃

php - 什么影响 MySQL 中的 max_connections_per_hour 值?

php - 拆分逗号分隔值以查找结果

用于嵌套 Div 标签的 PHP RegEx

php - jQuery 和 PHP : Resizing, 刷新和裁剪

php - ON UPDATE MySQL 与 DBAL Doctrine

mysql - 为什么 last_insert_id() 会在插入失败时返回一个值?

php - 如何连接两个截然不同的mysql表,并同时按两列排序?

mysql - 在一次查询中从表中获取数据

mysql自连接