mehrer Spalten in einer Spalte anzeigen

Supatome

Benutzer
Beiträge
20
Hallo zusammen

ich bin ein Neuling und versuche einige Abfragen aus Access in MySql zu migrieren.

Nun habe ich folgende Code erstellt, welche in den Spalten einwandfrei dargestellt werden.

(CASE WHEN (`tblverkaufposition`.`FilialKundenID` = '0') THEN '' ELSE `tblverkaufposition`.`FilialKundenID` END ) AS `FLK`,
(CASE WHEN (`tblverkaufposition`.`Auftragsart` = '1' ) THEN 'V' END) AS `V`,
(CASE WHEN (`tblverkaufposition`.`Auftragsart` = '2' ) THEN 'S' END) AS `S`,
(CASE WHEN (`tblverkaufposition`.`Auftragsart` = '3' ) THEN 'E' END) AS `E`,
(CASE WHEN (`tblartikelbase`.`Artikelart` = '80' ) THEN '_Spez' END) AS `_Spez`,
(CASE WHEN (`tblartikelbase`.`Artikelart` = '30' ) THEN '_Ex' END) AS `Ex`,
(CASE WHEN (`tblartikelbase`.`Artikelart` = '10' ) THEN '_Ko' END) AS `Ko`,
(CASE WHEN (`tblartikelbase`.`Artikelart` = '100' ) THEN '_IMP' END) AS `IMP`

ich muss nun diese einzelnen Spalten in einer Spalte zusammenführen.
Concat (FLK, V, S, E, _Spez, Ex, Ko, Imp) as ArtID

habe ich versucht, leider ohne Erfolg. Gibt es da eine Lösung?

Grüsse
Supatome
 
Werbung:
Das kommt weil eine nicht erfüllte Bedingung dann in dieser Spalte NULL ergibt, und NULL mit etwas CONCAT bleibt NULL.

Demo mit PostgreSQL:

Code:
test=# select case when 1=1 then '1' end || 'demo' as x;
  x   
-------
 1demo
(1 row)

test=# select case when 1=2 then '1' end || 'demo' as x;
 x
---
(1 row)
 
Danke für die Hilfe. Habe ELSE hinzugefügt und noch einmal versucht. Leider mit folgender Fehlermeldung

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CONCAT(ubmUeDaten.FLK,ubmUeDaten.V')
 
So habe ich das gemacht..

Code:
SELECT
tblverkaufkopfuser1.AuftragID,   
    (CASE    WHEN (`tblverkaufpositionuser1`.`FilialKundenID` = '0') THEN '' ELSE `tblverkaufpositionuser1`.`FilialKundenID`    END ) AS `FLK`,
    (CASE    WHEN (`tblverkaufpositionuser1`.`Auftragsart` = '1') THEN 'V'    ELSE '' END) AS `V`,
    (CASE WHEN (`tblverkaufpositionuser1`.`Auftragsart` = '2') THEN    'S'    ELSE '' END) AS `S`,
    (CASE    WHEN (`tblverkaufpositionuser1`.`Auftragsart` = '3') THEN    'E'    ELSE ''    END) AS `E`,
    (CASE    WHEN (`tblartikelbase`.`Artikelart` = '80') THEN '_Spez' ELSE    ''    END) AS `_Spez`,
    (CASE    WHEN (`tblartikelbase`.`Artikelart` = '30') THEN '_Ex'   ELSE    ''    END) AS `Ex`,
    (CASE    WHEN (`tblartikelbase`.`Artikelart` = '10') THEN '_Ko'   ELSE    ''    END) AS `Ko`,
    (CASE    WHEN (`tblartikelbase`.`Artikelart` = '100') THEN '_IMP' ELSE ''     END) AS `IMP`
FROM
    ((((((((((((((`tblartikelbase`   
        JOIN `tbllieferantenbase` ON ((    `tbllieferantenbase`.`LieferantID` = `tblartikelbase`.`LieferantID`)))
        JOIN `tblpreise` ON ((`tblpreise`.`ArtikelID` = `tblartikelbase`.`ArtikelID`)))
        JOIN `qyrArtikelbase` ON ((`qyrArtikelbase`.`ArtikelID` = `tblpreise`.`ArtikelID`)))
        JOIN `tblartikelgruppebase` ON ((`tblartikelgruppebase`.`ArtikelGruppeID` = `tblartikelbase`.`ArtikelGruppeID`)))
        JOIN `tblraster` ON ((`tblraster`.`RasterID` = `tblartikelbase`.`GRÖSSEN`)))
        JOIN `tbllagerart` ON ((`tbllagerart`.`LagerArt` = `tblartikelbase`.`Artikelart`)))
        JOIN `tblverkaufpositionuser1` ON ((`tblverkaufpositionuser1`.`Artikel` = `tblartikelbase`.`ArtikelID`)))
        JOIN `tblverkaufkopfuser1` ON ((`tblverkaufkopfuser1`.`AuftragID` = `tblverkaufpositionuser1`.`AuftragID`)))
        JOIN `qyrBestellArt` ON ((`qyrBestellArt`.`BestArt` = `tblverkaufpositionuser1`.`Auftragsart`)))
        JOIN `qyrKundenbase` ON ((`qyrKundenbase`.`KundeID` = `tblverkaufpositionuser1`.`FilialKundenID`)))
        JOIN `tblliefertermine` ON ((`tblliefertermine`.`LTK` = `tblverkaufpositionuser1`.`Liefertermin`)))
        JOIN `tblkundenbase` ON ((`tblkundenbase`.`KundeID` = `tblverkaufkopfuser1`.`KundeID`)))
        JOIN `tblbestellart` ON ((`tblbestellart`.`BestArt` = `tblverkaufkopfuser1`.`Bestellart`)))
        JOIN `tblvertreter` ON ((`tblvertreter`.`Vertreter -N°` = `tblverkaufkopfuser1`.`Vertreter`)))

upload_2017-9-5_13-7-21.png
 
Sorry; das ist inkl. Concat, welche ich rausgelöscht habe, da ich den Code so ja nicht speichern konnte.

Code:
[SQL]select `tblverkaufkopfuser1`.`AuftragID` AS `AuftragID`,(case when (`tblverkaufpositionuser1`.`FilialKundenID` = '0') then '' else `tblverkaufpositionuser1`.`FilialKundenID` end) AS `FLK`,(case when (`tblverkaufpositionuser1`.`Auftragsart` = '1') then 'V' else '' end) AS `V`,(case when (`tblverkaufpositionuser1`.`Auftragsart` = '2') then 'S' else '' end) AS `S`,(case when (`tblverkaufpositionuser1`.`Auftragsart` = '3') then 'E' else '' end) AS `E`,(case when (`tblartikelbase`.`Artikelart` = '80') then '_Spez' else '' end) AS `_Spez`,(case when (`tblartikelbase`.`Artikelart` = '30') then '_Ex' else '' end) AS `Ex`,(case when (`tblartikelbase`.`Artikelart` = '10') then '_Ko' else '' end) AS `Ko`,(case when (`tblartikelbase`.`Artikelart` = '100') then '_IMP' else '' end) AS `IMP`
CONCAT(ubmUebermitlungAuftraegeDatenUser1_copy.FLK,ubmUebermitlungAuftraegeDatenUser1_copy.E)
from ((((((((((((((`tblartikelbase` join `tbllieferantenbase` on((`tbllieferantenbase`.`LieferantID` = `tblartikelbase`.`LieferantID`))) join `tblpreise` on((`tblpreise`.`ArtikelID` = `tblartikelbase`.`ArtikelID`))) join `qyrArtikelbase` on((`qyrArtikelbase`.`ArtikelID` = `tblpreise`.`ArtikelID`))) join `tblartikelgruppebase` on((`tblartikelgruppebase`.`ArtikelGruppeID` = `tblartikelbase`.`ArtikelGruppeID`))) join `tblraster` on((`tblraster`.`RasterID` = `tblartikelbase`.`GRÖSSEN`))) join `tbllagerart` on((`tbllagerart`.`LagerArt` = `tblartikelbase`.`Artikelart`))) join `tblverkaufpositionuser1` on((`tblverkaufpositionuser1`.`Artikel` = `tblartikelbase`.`ArtikelID`))) join `tblverkaufkopfuser1` on((`tblverkaufkopfuser1`.`AuftragID` = `tblverkaufpositionuser1`.`AuftragID`))) join `qyrBestellArt` on((`qyrBestellArt`.`BestArt` = `tblverkaufpositionuser1`.`Auftragsart`))) join `qyrKundenbase` on((`qyrKundenbase`.`KundeID` = `tblverkaufpositionuser1`.`FilialKundenID`))) join `tblliefertermine` on((`tblliefertermine`.`LTK` = `tblverkaufpositionuser1`.`Liefertermin`))) join `tblkundenbase` on((`tblkundenbase`.`KundeID` = `tblverkaufkopfuser1`.`KundeID`))) join `tblbestellart` on((`tblbestellart`.`BestArt` = `tblverkaufkopfuser1`.`Bestellart`))) join `tblvertreter` on((`tblvertreter`.`Vertreter -N°` = `tblverkaufkopfuser1`.`Vertreter`)))

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CONCAT(ubmUebermitlungAuftraegeDatenUser1_copy.FLK,ubmUebermitlungAuftraegeDaten' at line 2
 
Ja hinter der letzten Spalte vor dem CONCAT und dem CONCAT selbst fehlt ein Komma, das sind zwei unterschiedliche Spalten.

Auch weiß ich nicht wo der erste Wert in CONCAT() herkommen soll, ubmUebermitlungAuftraegeDatenUser1_copy.FLK soll vermutlich eine Spalte aus dem Ergebnis des Querys selbst sein. Du kannst aber nicht auf Spalten zugreifen die erst im Ergebnis erstellt werden daher musst du die CASE-Anweisungen entweder in die CONCAT-Liste schreiben oder du machst einen Select mit Subselect.
MySQL :: MySQL 5.7 Reference Manual :: 12.5 String Functions
 
Werbung:
Zurück
Oben