我有两个不同的表,一个是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

09-28 12:36