我讀,顯示如何製造出來的一個的幾排的問題Combine multiple rows into one row MySQL選擇語句一行的結果。 SQL Fiddle with Demo也運行良好。在這個問題中,有兩個表格:t1和t2。我的問題有三個表,我已經簡化了這個問題:將多行三個表成一排在MySQL
表語言:
ID INT(11) NOT NULL PRIMARY_KEY
name VARCHAR(255) NOT NULL UNIQUE
表languages_have_persons:
Languages_ID INT(11) NOT NULL PRIMARY_KEY
Persons_ID INT(11) NOT NULL
表人:
ID INT(11) NOT NULL PRIMARY_KEY
firstName VARCHAR(255) NOT NULL
lastName VARCHAR(255) NOT NULL
我想要做的是將這些表格類似地組合起來,但是現在我幾個小時都沒有這樣做。這是我最後一次嘗試:
SELECT p1.ID
, p1.firstName
, p1.lastName
CONCAT_WS(', '
, l2de.name
, l2en.name
)
FROM
languages_have_persons AS lp, persons AS p1
LEFT JOIN languages AS l2de ON
l2de.ID = 4 -- German
LEFT JOIN languages AS l2en ON
l2en.ID = 5 -- English
WHERE p1.ID = lp.Persons_ID
ORDER BY lastName, firstName;
錯誤消息如下:
Fehler
SQL-Befehl: Dokumentation
SELECT p1.ID AS ID
, p1.firstName AS firstName
, p1.lastName AS lastName
CONCAT_WS(', '
, l2de.name
, l2en.name
)
FROM
languages_have_persons AS lp, persons AS p1
LEFT JOIN languages AS l2de ON
l2de.ID = 4 LEFT JOIN languages AS l2en ON
l2en.ID = 5 WHERE p1.ID = lp.Persons_ID
ORDER BY lastName, firstName LIMIT 0, 25
MySQL meldet: Dokumentation
#1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch
nachschlagen bei '(', '
, l2de.name
, l2en.name
)
FROM
languages_have_persons AS lp, ' in Zeile 4
我也嘗試過其他方法,但什麼都沒有正確的語法。我要的是結果如下:
表語言:
ID name
4 German
5 English
表language_have_persons:
Languages_ID Persons_ID
4 2
5 1
5 2
表人:
ID firstName lastName
1 Joe Frazier
2 Arnold Schwarzenegger
我從正確的SELECT語句想到的是像
firstName lastName CONCAT_WS(…
Joe Frazier English
Arnold Schwarzenegger German, English
你在上面的SQL語法看到錯誤?如果不是,你知道如何解決它嗎?
謝謝你的幫助!
您必須在'CONCAT_WS'之前添加一個逗號。 – GhostGambler
謝謝!就是這樣,但我看不到它,並嘗試了很多錯誤的陳述。 – Sae1962
這種格式化查詢的重點正是爲了避免這種錯誤 - 做得很好! – Strawberry