MySQL视图将3个字段链接到另一个表中具有不同值的相同字段
我有两个表,MySQL视图将3个字段链接到另一个表中具有不同值的相同字段,mysql,Mysql,我有两个表,users和user\u images。在用户表中,每个用户有3个大小,由用户表中的外键标识,该外键是用户图像表的主键。因此,用户、小图像id、中图像id和用户、大图像id都引用了用户图像表中的不同行。 我正在尝试编写一个视图,其中您所看到的是每个图像大小的image\u url,medium\u image\u url,以及large\u image\u url。如何将这些列的值与同一个表区分开来?谢谢你的帮助 因此,生成的视图模式最终看起来像 user_id | user
users
和user\u images
。在用户
表中,每个用户有3个大小,由用户
表中的外键标识,该外键是用户图像
表的主键。因此,用户、小图像id
、中图像id
和用户、大图像id
都引用了用户图像
表中的不同行。
我正在尝试编写一个视图,其中您所看到的是每个图像大小的image\u url
,medium\u image\u url
,以及large\u image\u url
。如何将这些列的值与同一个表区分开来?谢谢你的帮助
因此,生成的视图模式最终看起来像
user_id | user_name | small_image_url | medium_image_url | large_image_url
我认为您必须在这里三次使用
user\u images
表加入users
:
CREATE VIEW user_image_urls AS
SELECT u.user_id,
u.user_name,
COALESCE(t1.small_image_url, 'NA'),
COALESCE(t2.medium_image_url, 'NA'),
COALESCE(t3.large_image_url, 'NA')
FROM users u
LEFT JOIN user_images t1
ON u.small_image_id = t1.small_image_id
LEFT JOIN user_images t2
ON u.medium_image_id = t2.medium_image_id
LEFT JOIN user_images t3
ON u.large_image_id = t3.large_image_id
我在这里使用了左连接,以允许某些用户可能没有定义给定的URL。使用内部联接可能会导致用户从结果集中删除,这可能不是您想要的。相反,我列出了缺少的URL的
'NA'
。您需要三次连接到user\u images表,以将三个图像大小合并为同一行中的列和相应的用户
CREATE VIEW AS users_with_their_images AS
SELECT u.id,
uis.url AS small_image_url,
uim.url AS medium_image_url,
uil.url AS large_image_url
FROM users AS u
LEFT OUTER JOIN user_images uis ON uis.id = u.small_image_id
LEFT OUTER JOIN user_images uim ON uim.id = u.medium_image_id
LEFT OUTER JOIN user_images uil ON uil.id = u.large_image_id;
连接就是这样:它并排地粘在一起,连接中每个表中的一行
如果要将多个行添加到此视图中,则需要多个联接。您实际上希望视图中有三个单独的url列,还是一列?是的,有三个url列。