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



我有两个表: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;

TableA foreign keyuser_id。并且用户属于称为成员的会话。

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

picIDTableA中的主键,user_idTableB中的主键,两者都设置为自动递增而不是null。

然后我想知道如何将TableA中的徽标关联到用户表,TableB,以便在我使用 echo 时,与 TableA 中的图像关联的行仅在特定用户会话期间显示。

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

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

此查询将返回与每个用户关联的所有图像。

     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的图像

相关内容

最新更新