簡體   English   中英

MySQL 將 2 列與同一個表連接起來

[英]MySQL joining 2 columns with the same table

我有 3 張桌子:

  • unit_cat (id_cat, slug) :有一個類別列表,例如:溫度、重量、距離、面積
  • unit_list (id_cat, id_unit, slug) :每個類別都有一個單位列表,例如:攝氏度、華氏度等
  • unit_stats (id_cat, id_unit_1, id_unit_2, date_update, hits) :計算單位轉換的特定組合用於統計目的的次數。

我需要獲取 cat slug 和 stats 表的單元 slug,與 unit_cat 表和 unit_list 連接。 問題是我同時加入了unit_stats.id_unit_1unit_stats.id_unit_2

這是結構的sqlfiddle和我當前的查詢(沒有得到想要的結果):

SELECT
unit_stats.hits AS hits,
unit_cat.slug AS cat,
unit_list.slug AS slug_1,
unit_list.slug AS slug_2
FROM unit_stats
JOIN unit_cat ON unit_cat.id_cat = unit_stats.id_cat
JOIN unit_list ON unit_list.id_unit = unit_stats.id_unit_1 AND unit_list.id_unit = unit_stats.id_unit_2
ORDER BY hits DESC

所需的結果應采用以下格式:

temperature, celsius, fahrenheit

謝謝你的幫助。

您的查詢不起作用,因為您在unit_listJOIN條件中有沖突的條件。 您實際上需要JOIN unit_list兩次,每個單元一次,以獲得不同的 slug。 請注意,您還需要在JOIN條件中包含id_cat ,這樣您就不會從其他類別中獲取單位。

SELECT
    us.hits AS hits,
    uc.slug AS cat,
    ul1.slug AS slug_1,
    ul2.slug AS slug_2
FROM unit_stats us
JOIN unit_cat uc ON uc.id_cat = us.id_cat
JOIN unit_list ul1 ON ul1.id_unit = us.id_unit_1 AND ul1.id_cat = uc.id_cat
JOIN unit_list ul2 ON ul2.id_unit = us.id_unit_2 AND ul2.id_cat = uc.id_cat
ORDER BY hits DESC

Output(用於您的演示數據)

hits    cat             slug_1          slug_2
16      weight          kilogram        gram
6       area            square-meter    square-kilometer
4       temperature     celsius         fahrenheit
2       distance        meter           exameter

SQLFiddle 上的演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM