如何用多个id连接同一个表?



我的目标是在同一个id上多次JOIN一个表。

下面是我的数据库结构的一个片段:

+---------------+--------------+-----------------------------------------+----------+-------+-----------+-----------+---------------+
| wochenplan_id | wochentag_id | gericht                                 | kalorien | preis | kategorie | kategorie | inhaltsstoffe |
+---------------+--------------+-----------------------------------------+----------+-------+-----------+-----------+---------------+
|           319 |           11 | Käse - Lauch - Suppe                    |     NULL |  2.50 | NULL      | NULL      | g,i           |
|           320 |           12 | Griechische Kartoffelpfanne             |     NULL |  2.60 | NULL      | NULL      | 10,g,i        |
|           323 |           15 | Erbseneintopf                           |     NULL |  2.60 | NULL      | NULL      | i             |
|           324 |           21 | Erbseneintopf mit Einlage               |     NULL |  2.60 | NULL      | NULL      | 1,2,11,i      |
|           325 |           22 | Erbsensuppe                             |     NULL |  2.50 | NULL      | NULL      | 1,2,11,i      |
|           326 |           23 | NULL                                    |     NULL |  NULL | NULL      | NULL      | NULL          |
+---------------+--------------+-----------------------------------------+----------+-------+-----------+-----------+---------------+
+--------------+-------------+
| kategorie_id | kategorie   |
+--------------+-------------+
|            1 | Vegan       |
|            2 | Vegetarisch |
|            3 | Geflügel    |
|            4 | Rind        |
|            5 | Schwein     |
|            6 | Lamm        |
|            7 | Wild        |
|            8 | Fisch       |
+--------------+-------------+

我需要从上面的表加入到kategorien表。我已经从stackoverflow中尝试了一些解决方案,但是没有一个真正有效。

这是我到目前为止的查询:

SELECT wochenplan_id, wochentag_id, gerichte.gericht, gerichte.kalorien, preise.preis, kat1.kategorie, kat2.kategorie, gerichte.inhaltsstoffe 
FROM wochenplan 
LEFT JOIN gerichte ON wochenplan.gericht_id = gerichte.gericht_id 
LEFT JOIN preise ON gerichte.preis_id = preise.preis_id 
LEFT JOIN kategorien AS kat1 ON gerichte.kategorie_id = kat1.kategorie 
LEFT JOIN kategorien AS kat2 ON gerichte.kategorie2_id = kat2.kategorie 
WHERE wochenplan.kw_jahr = 102021;

我总是得到NULL作为结果。有什么办法解决这个问题吗?

将同一个表连接两次应该没问题。

您还没有发布整个表结构,但您不应该在id列上加入分类表吗?这样的:

SELECT wochenplan_id, wochentag_id, gerichte.gericht, gerichte.kalorien, preise.preis, kat1.kategorie, kat2.kategorie, gerichte.inhaltsstoffe 
FROM wochenplan 
LEFT JOIN gerichte ON wochenplan.gericht_id = gerichte.gericht_id 
LEFT JOIN preise ON gerichte.preis_id = preise.preis_id 
LEFT JOIN kategorien AS kat1 ON gerichte.kategorie_id = kat1.kategorie_id 
LEFT JOIN kategorien AS kat2 ON gerichte.kategorie2_id = kat2.kategorie_id 
WHERE wochenplan.kw_jahr = 102021;

相关内容

  • 没有找到相关文章

最新更新