我有一个基于userid的表,其中包含用户喜欢的图像
我还有另一个表,其中包含用户的用户名和用户ID
我想运行一个查询,在查询中插入一个名称,然后检索该用户ID,并使用该用户ID搜索收藏夹表,返回用户名和所选图像
我对SQL还是很陌生,请多多帮助
SELECT *
FROM `atabl_users`
WHERE `name` LIKE 'user to input value'
LIMIT 0 , 30
SELECT *
FROM `atabl_joomgallery_users`
WHERE `uid` =17
ORDER BY `azc6a_joomgallery_users`.`uid` ASC
LIMIT 0 , 30
答案 0 :(得分:0)
如果您需要两个表中的所有信息,则需要它们都共享一个ID,以便可以将它们链接(联接)在一起。
根据您提供的信息,我假设两个表都包含值“ uid”作为用户ID。
因此,应使用以下查询:
“ SELECT * FROM atabl_users au INNER JOIN atabl_joomgallery_users aju ON au.uid = aju.uid WHERE au.name LIKE?AND aju.uid = 17 LIMIT 30”
我已经删除了ORDER BY,因为您需要使用另一个。如果您将其指定为17,则按uid进行排序是没有用的。
为说明起见,我们要求从表atable_users中获取所有信息*,然后为它分配一个简写值au,以使以后更易于阅读。然后,我们基于两个唯一值将此表集与另一个表连接起来。然后,我们可以使用WHERE值优化搜索,最后将结果集限制为30。
答案 1 :(得分:0)
您使用JOIN组合查询
SELECT j.*
FROM atabl_joomgallery_users j
JOIN atabl_users u ON u.id = j.uuserid
WHERE u.name LIKE ?
请注意,LIKE可能会返回多个用户,因此,如果您获得唯一的用户名作为输入值,则可以将where子句更改为
WHERE u.name = ?