使用外键链接两个表,其中一个表包含图像,另一个用户信息

时间:2017-01-19 11:21:29

标签: mysql

我有两张桌子: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中的TableAuser_id。用户属于名为members的会话。

user_id=".$_SESSION['members']);

picIDTableA中的主键,user_idTableB中的主键,两者都设置为自动递增而非空。

然后,我想了解如何将TableA中的徽标与用户表TableB相关联,以便TableA中带有图片的关联行只会在我使用echo时的特定用户会话。

换句话说,user_id应与picID的特定行相关联,以便每个用户都拥有自己的图像行,并且具有唯一的图像。

但我似乎无法弄清楚如何使用我的数据库中的外键user_id链接这两个表。

1 个答案:

答案 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