我有两张桌子:TableA
包含图片,TableB
包含用户信息。
表A
CREATE TABLE `TableA` (
`picID` int(11) NOT NULL,
`logos` varchar(200) DEFAULT NULL,
`user_id` varchar(20) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
表B
CREATE TABLE `TableB` (
`user_id` int(11) NOT NULL,
`user_name` varchar(12) NOT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
foreign key
中的TableA
为user_id
。用户属于名为members的会话。
user_id=".$_SESSION['members']);
picID
是TableA
中的主键,user_id
是TableB
中的主键,两者都设置为自动递增而非空。
然后,我想了解如何将TableA
中的徽标与用户表TableB
相关联,以便TableA
中带有图片的关联行只会在我使用echo时的特定用户会话。
换句话说,user_id
应与picID
的特定行相关联,以便每个用户都拥有自己的图像行,并且具有唯一的图像。
但我似乎无法弄清楚如何使用我的数据库中的外键user_id
链接这两个表。
答案 0 :(得分:1)
此查询将返回与每个用户关联的所有图像。
SELECT b.user_id, b.user_name, a.picID, a.logos
FROM TableB b
LEFT JOIN TableA a ON a.user_id = b.user_id
WHERE b.user_id = $user_id
或者,如果您只关心此上下文中TableB
的内容,请执行以下更简单的查询:
SELECT a.picID, a.logos
FROM TableA a
WHERE a.user_id = $user_id
ORDER BY a.picID DESC LIMIT 1
除此之外你的问题还不清楚。不过,如果用户有多个与之关联的图像,我想你只想要一个图像。
因此,您需要决定如何在图像中进行选择。一种选择是:为用户选择最新的图像。在这种情况下,将此行添加到我刚给你的查询中。
ORDER BY a.picID DESC LIMIT 1
我在此处将最新图片定义为图片,其值为picID
。