我有两个不同的表,一个是file
,另一个是image
。如果上载的内容是图像,则内容详细信息将存储在图像表中。剩余的内容(例如doc,pdf等)存储在文件表中。两者均由folder_id
标识。
现在,我想根据给定的folder_id列出文件和图像。
范例:
图像表
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
一切正常。但是我的问题是这还有其他解决方案吗?提前致谢。
最佳答案
您可以做一个简单的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