Ich weiß, dass mysql die äußere Tabelle von einer Unterabfrage nicht erkennt, aber leider habe ich keine Ahnung, wie ich das lösen soll.SQL-Abfrage zu mysql (Unterabfrage erkennt äußere Tabelle nicht)
Zuerst wird die Tabellenstruktur, ich habe drei Tabellen (m bis n):
Tabelle 1: Tanz
TID | Name_Of_The_Dance
12 | Heute Tanz ich
Table2: Tänzerin
TAID | Name_Of_Dancer
1 | Alex Womitsch
2 | Julian Berger
Tabelle 3 (Referenzierung Tabelle): dance2dancer
TID | TAID
12 | 213
12 | 345
Was muss ich (Ausgang) erreichen wollen:
TID | AllDancerWhoDance
12 | 213---,345---,0---,0---,0---,0---,0---,0---,0---,0---
Jeder Ausgang sollte die Tanz TID haben und alle Tänzer, der in diesem Tanz tanzen. Aber AllDancerWhoDance sollte mit "0 ---" gefüllt sein, wenn wir weniger als 10 Tänzer haben. Wenn wir mehr als 10 Tänzer in diesem Tanz haben, sollte die Abfrage die Saite auf maximal 10 Tänzer reduzieren.
Weitere Beispiele zu unterstand: Ein Tanz mit 4 Tänzer sollte mit 6 Nullen gefüllt werden:
9 | 213---,345---,111---,459---,0---,0---,0---,0---,0---,0---
Haben wir einen Tanz mit mehr als 10 Tänzer die Abfrage auf 10 verringern sollte:
9 | 213---,345---,111---,459---,333---,444---,445---,222---,192---,490--- (NO more zeros or dancer TAIDs)
Und hier ist meine Frage:
select dancer.tid,
IF(count(dancer.taid) <= 10,
CONCAT_WS("",GROUP_CONCAT(dancer.taid,"&&&"), REPEAT(";0",10-count(dancer.taid)))
, (SELECT GROUP_CONCAT(a.taid,"&&&") from (SELECT ttt.taid from dance2dancer ttt inner join dance taenz on ttt.tid = taenz.tid where ttt.tid = dance.tid LIMIT 10) as a)
) AS "AllDancerWhoDance"
from dance inner join dance2dancer tt on dance.tid = tt.tid inner join dancer on tt.taid = dancer.taid group by dance.tid
ich denke, es würde funktionieren, aber das Problem ist, dass die Unterabfrage nicht in die äußere Tabelle sieht und das „Wo“ -Klausel funktioniert nicht:
wo ttt.tid = dance.tid
Und jetzt meine Fragen:
Wie kann ich erreichen, dass diese SQL-Abfrage in MySQL funktioniert?
Danke
// UPDATE
Da viele Menschen für die Front-End-Code gefragt und warum sollte ich diese Abfrage benötigen: Wir haben eine 22 Jahre alte Software, die diese Daten in einem solchen Format benötigt . Es wurde von einer Firma programmiert, die es nicht mehr gibt und wir haben keinen Quellcode für dieses Programm. Wir haben die Datenbank und die Website auf dieses neue Datenmodell (m: n) geändert, aber das alte Programm benötigt noch die Daten im alten Format. Daher brauche ich diese seltsame Abfrage. Und ja, wir arbeiten auch an einem neuen Programm.
ich nicht aus einem vernünftigen Grund für die Konstruktion solcher eine ungerade Zeichenfolge denken kann. : - $ – Strawberry