Probleme bei einem UNION SELECT
Hallo,
ich knabbere gerauem Zeit an einem Query herum, mir ist soweit schon gelungen meine Ganzen Daten aus den Sidetables zu holen ich scheitere nur daran die Daten aus der positions Table noch zu sortieren nach ihrer posNum.
Es soll das ganze in diese Richtung der Darstellung laufen:
Project 0x1
-- Pos 01
-- Pos 02
-- Pos 03
Was ich derzeit habe ist das hier:
Project 0x1
-- Pos 03
-- Pos 01
-- Pos 02
[code]
SELECT p.pid AS dip,p.prNum,"",p.order,p.description,"",cus.name FROM `projectList_projects` AS p
JOIN customers AS cus ON cus.cid = p.customerID)
UNION
(SELECT pd.pid,pd.prNum,pp.posNum,"",pp.description,pp.drawingNum,cus.name FROM `projectList_positions` AS pp
JOIN projectList_projects AS pd ON pd.pID = pp.pID
JOIN customers AS cus ON cus.cid = pd.customerID)
ORDER BY dip
[/code]
Nachdem es ja so ist das die Sortierkritieren im ersten Select getätig werden müssen steig ich gedanklich aus...
Dank und Gruß im voraus
ich knabbere gerauem Zeit an einem Query herum, mir ist soweit schon gelungen meine Ganzen Daten aus den Sidetables zu holen ich scheitere nur daran die Daten aus der positions Table noch zu sortieren nach ihrer posNum.
Es soll das ganze in diese Richtung der Darstellung laufen:
Project 0x1
-- Pos 01
-- Pos 02
-- Pos 03
Was ich derzeit habe ist das hier:
Project 0x1
-- Pos 03
-- Pos 01
-- Pos 02
[code]
SELECT p.pid AS dip,p.prNum,"",p.order,p.description,"",cus.name FROM `projectList_projects` AS p
JOIN customers AS cus ON cus.cid = p.customerID)
UNION
(SELECT pd.pid,pd.prNum,pp.posNum,"",pp.description,pp.drawingNum,cus.name FROM `projectList_positions` AS pp
JOIN projectList_projects AS pd ON pd.pID = pp.pID
JOIN customers AS cus ON cus.cid = pd.customerID)
ORDER BY dip
[/code]
Nachdem es ja so ist das die Sortierkritieren im ersten Select getätig werden müssen steig ich gedanklich aus...
Dank und Gruß im voraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 137492
Url: https://administrator.de/contentid/137492
Ausgedruckt am: 23.11.2024 um 09:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo,
ich kenne es genau andersrum, das "ORDER BY" kommt als Letztes.
Desweiteren kannst Du bei einigen Datenbanken das ORDER BY mit den Positionsnummern der selektierten Spalten angeben, z.B. ORDER BY 1,5,3
Gruß René
ich kenne es genau andersrum, das "ORDER BY" kommt als Letztes.
Desweiteren kannst Du bei einigen Datenbanken das ORDER BY mit den Positionsnummern der selektierten Spalten angeben, z.B. ORDER BY 1,5,3
Gruß René
Moin godlie,
versuch es so:
Die beiden namenlosen Felder in deinem ersten Teil-Select habe ich mit Namen versehen.
Ich bin zwar nicht ganz schlau geworden, nach was du nun sortieren willst... aber an das ORDER BY kommst du ja jetzt ran.
Auf keinen Fall macht es Sinn, schon innerhalb eines der Teil-SELECTs zu sortieren... es wird ja so oder so der komplette Union am Ende neu arrangiert per ORDER BY.
Grüße
Biber
versuch es so:
Select x.dip, x.prnum, x.posnum, x.order, x.description, x.drawingnum, x.name From (
SELECT p.pid AS dip,p.prNum,"" as posnum, p.order,p.description,"" as DrawingNum,cus.name FROM `projectList_projects` AS p
JOIN customers AS cus ON cus.cid = p.customerID)
UNION ALL
(SELECT pd.pid,pd.prNum,pp.posNum,"",pp.description,pp.drawingNum,cus.name FROM `projectList_positions` AS pp
JOIN projectList_projects AS pd ON pd.pID = pp.pID
JOIN customers AS cus ON cus.cid = pd.customerID)
) as x
ORDER BY x.dip, x.posnum
Die beiden namenlosen Felder in deinem ersten Teil-Select habe ich mit Namen versehen.
Ich bin zwar nicht ganz schlau geworden, nach was du nun sortieren willst... aber an das ORDER BY kommst du ja jetzt ran.
Auf keinen Fall macht es Sinn, schon innerhalb eines der Teil-SELECTs zu sortieren... es wird ja so oder so der komplette Union am Ende neu arrangiert per ORDER BY.
Grüße
Biber
Moin godlie,
na ja, der einzige "doppelt" verwendete Alis ist doch der Alias "cus" für die Customers-Table.
Ändere doch da mal einen der beiden von cus in Couscous oder in cus2.
Wenn es jetzt nicht fliegt, dann muss ich es wohl doch testen...
Grüße
Biber
na ja, der einzige "doppelt" verwendete Alis ist doch der Alias "cus" für die Customers-Table.
Ändere doch da mal einen der beiden von cus in Couscous oder in cus2.
Select x.dip, x.prnum, x.posnum, x.order, x.description, x.drawingnum, x.name From (
SELECT p.pid AS dip,p.prNum,"" as posnum, p.order,p.description,"" as DrawingNum,cus1.name FROM `projectList_projects` AS p
JOIN customers AS cus1 ON cus1.cid = p.customerID)
UNION ALL
(SELECT pd.pid,pd.prNum,pp.posNum,"",pp.description,pp.drawingNum,cus2.name FROM `projectList_positions` AS pp
JOIN projectList_projects AS pd ON pd.pID = pp.pID
JOIN customers AS cus2 ON cus2.cid = pd.customerID)
) as x
ORDER BY x.dip, x.posnum
Wenn es jetzt nicht fliegt, dann muss ich es wohl doch testen...
Grüße
Biber