使用PHP和MYSQL返回具有特定ID号的行?
我很难用SQL查询返回正确的行。我只想返回31或34作为其相册\u items.id的行。我想从结果中排除任何其他album_items.id。我关注的主线是:使用PHP和MYSQL返回具有特定ID号的行?,php,mysql,Php,Mysql,我很难用SQL查询返回正确的行。我只想返回31或34作为其相册\u items.id的行。我想从结果中排除任何其他album_items.id。我关注的主线是: WHERE album_items.album IN (31,34) 无论出于何种原因,即使是没有album_items.id为31或34的行也会被返回。这是完整的查询。有没有可能我没有使用正确的语法 SELECT * FROM items_table RIGHT JOIN items_table ON items_table.
WHERE album_items.album IN (31,34)
无论出于何种原因,即使是没有album_items.id为31或34的行也会被返回。这是完整的查询。有没有可能我没有使用正确的语法
SELECT * FROM items_table
RIGHT JOIN items_table
ON items_table.id=album_items.id
WHERE album_items.album IN (31,34)
AND items_table.name LIKE '%{$term}%'
OR items_table.description LIKE '%{$term}%'
AND items_table.active != '0'
谢谢你抽出时间,
莎拉我认为这是操作顺序的问题 在sql中,您拥有
WHERE album_items.album IN (31,34)
AND items_table.name LIKE '%{$term}%'
OR items_table.description LIKE '%{$term}%'
AND items_table.active != '0'
这被解释为
WHERE
(album_items.album IN (31,34) AND items_table.name LIKE '%{$term}%')
OR
(items_table.description LIKE '%{$term}%' AND items_table.active != '0')
最有可能的情况是,第二种情况导致了额外的行。您需要在适当的地方包含括号
SELECT * FROM items_table
RIGHT JOIN album_items
ON items_table.id=album_items.id
WHERE album_items.album IN (31,34)
AND (items_table.name LIKE '%{$term}%'
OR items_table.description LIKE '%{$term}%'
AND items_table.active != '0')
使用()使顺序正确。现在,希望它将只给您id为31和34的行
我想实际上你要做的是:(加入item_表和album_表)
我想你的问题应该是这样的
选择*
从项目\表i右键连接相册\项目a
在i.id=a.id上
其中a.相册在(31,34)
和(i.name如“{$term}%”或i.description如“{$term}%”)
而我,活跃0'
完成并除尘。谢谢你!括号按你说的做了。
SELECT * FROM items_table
RIGHT JOIN album_items
ON items_table.id=album_items.id
WHERE album_items.album IN (31,34)
AND (items_table.name LIKE '%{$term}%'
OR items_table.description LIKE '%{$term}%'
AND items_table.active != '0')