我在 MySQL 中有两个表:
表项:
id | name | date
1 | Test Entry | 12/12/2013
2 | Test Entry 2 | 12/12/2013
表注
id | entry_id | name | value
1 | 1 | note1 | value1
2 | 1 | note2 | value2
3 | 2 | note1 | value1
4 | 3 | note4 | value4
其中entry_id
in是innote
的外键。id
entry
有没有我可以创建的任何解决方案,SELECT
它会给我如下结果?
entry_id | name | note1 | note2 | note3
1 | Test Entry | value1 | value2 | -
2 | Test Entry 2 | value 1 | - | value3
我想避免在这里(当前的实现是这样工作的)并且如果可能的话LEFT JOIN
只想加入一次。这里不好,因为我不知道一个条目可以附加多少注释。我当前的实现是这样工作的,我首先按名称获取所有不同的注释,这些注释可以在 中找到,然后通过 PHP 使用 foreach 构建一个 SELECT。最后,语句如下所示:note
LEFT JOIN
note
SELECT
SELECT
E.id as entry_id,
E.name as name,
N1.value as note1_value,
N2.value as note2_value,
N3.value as note3_value
FROM entry E
JOIN LEFT note N1 ON E.id = N1.entry_id AND N1.name = 'note1'
JOIN LEFT note N2 ON E.id = N2.entry_id AND N2.name = 'note2'
JOIN LEFT note N3 ON E.id = N3.entry_id AND N3.name = 'note3'
当我加入note
20-30 次时,事情变得棘手。