INNER JOIN,包含一个属性列和一个多属性列

时间:2018-01-22 09:15:45

标签: mysql join

我有三张桌子:

首先由基本项目(表名:ITEMS)

组成
| id | picture_id | name | other_columns |

第二个由基本元素的属性(表名:ITEM_PROP)

组成
| id | item_id | prop_id | prop_value |

第三个包含有关文件的信息(表名:FILES)

| id | type | subdir | file_name |

我已经构建了一个查询:

SELECT items.id, item.name, item_prop.prop_value, files.subdir,file.file_name 
FROM items LEFT JOIN items_prop 
ON items.id = item_prop.item_id 
LEFT JOIN FILES 
on item_prop.prop_value = files.id WHERE item_prop.prop_id = 2 
ORDER BY items.id

这将是与每个项目链接的文件列表。

  

| id |名字| prop_value | subdir | file_name |

     

| 1 |项目#1 | 2 | ' RES / aeb342' | ' item_pic1.jpg' |

问题:是否可以在prop_value列中添加items.picture_id并在其他两列中与其相关联?

示例:SQL Fiddle

我想在一个查询中选择带有文件数据的items.picture_id。 有人这样想:

  

SELECT 
  items.id, items.name, 
  item_prop.prop_value, 
  files.subdir, files.file_name 
FROM items 
LEFT JOIN item_prop ON items.id = item_prop.item_id 
LEFT JOIN files ON item_prop.prop_value = files.id
UNION 
SELECT 
    items.id, items.name, items.picture_id,
    files.subdir, files.file_name 
FROM items 
LEFT JOIN files ON items.picture_id = files.id

0 个答案:

没有答案