我有两个不同的表。一个是file
,另一个是image
。如果上传的内容是图像,则内容详细信息存储在图像表中。剩余的(如doc,pdf等)事物存储在文件表中。两者都由folder_id
标识。
现在我想根据给定的folder_id列出文件和图像。
Exapmle:
图片表
image_id description img_orig img_sm folder_id
1 Image one img_one.png img_one.png 1
2 Image_two img_two.png img_two.png 1
3 Image_three img_three.png img_three.png 2
文件表
file_id description file_name file_size folder_id file_type
1 file_one one.txt 11KB 1 text/plain
2 file_two two.html 2KB 1 text/html
预期输出表
1 Image one img_one.png img_one.png 1 image
2 Image_two img_two.png img_two.png 1 image
1 file_one one.txt 11KB 1 text/plain
2 file_two two.html 2KB 1 text/html
我在MYSQL中尝试了UNION ALL
概念。
我的片段是
SELECT image_id as id,description,img_orig as name, img_sm as sm_size,folder_id,CONCAT('image','') as type
UNION ALL
SELECT folder_id as id,description,file_name as name, file_size as sm_size,folder_id,file_type as type
WHERE folder_id=1
工作正常。但我的问题是还有其他解决方案吗?在此先感谢。
答案 0 :(得分:0)
你可以做一个简单的JOIN。您可以从任何表中提取任何列。只需确保在列中添加表名或别名,如下所示。
Select I.image_id, I.description as img_desc,
F.description as file_desc, F.folder_id
From image I, file F
where I.folder_id = F.folder_id