Hallo Forum, ich möchte nachfolgene SQL-Anweisung SELECT c.bezeichner, m.wert, m.code FROM table1 m JOIN table2 c ON c.id = m.code um weitere bezeichner erweitern, welche nicht in der table2 vorhanden sind. Gibt es eine Möglichkeit, weitere c.id und c.bezeichner, direkt in der SQL-Abfrage mit anzugeben? lg bragol
was willst du? Ich glaub keiner von uns hat das verstanden. willst du weitere spalten anzeigen, die in tabelle 1 vorhanden sind? möchtest du neue Zeilen im Ergebnis der Abfrage? willst du Zeilen aus Tabelle 1 existieren, die keine Links in Tabelle 2 haben
Sorry für die missverständliche Problembeschreibung Vlad Tepesch schrieb: > willst du Zeilen aus Tabelle 1 existieren, die keine Links in Tabelle 2 > haben genau das möchte ich erreichen. In Tabelle 2 stehen die wichtigsten Bezeichner für die Codes aus Tabelle 1. Genau die werden mir mit der Select-Anweisung als Code und mit dem Klartextbezeichner angezeigt. Unwichtigere (die, deren ID nicht in Tabelle 2 ist) werden nicht angezeigt. Ich würde nun gern noch alle weiteren Codes aus Tabelle 1 angezeigt bekommen, wobei die Bezeichner hierfür nicht aus einer Tabelle gesucht werden sollen, sondern, falls möglich, aus einer Liste, welche in der SQL-Abfrage übergeben wird)
SELECT * from Tabellenname SL LEFT JOIN Tabelle SS ON SL.ISILONR = SS.SILONR AND cMatItemNr = '900001' AND SS.ScaleNr > 0
durch den LEFT JOIN in SELECT c.bezeichner, m.wert, m.code FROM table1 m LEFT JOIN table2 c ON c.id = m.code erhalte ich nun die komplette Liste der Codes mit den Bezeichnern aus tabelle2, an den Stellen, wo c.id = m.code ist. An den übrigen Stellen, wo es keine Gleichheit zwischen c.id und m.code gibt steht [null]. An diesen Stellen würde ich gern abhängig von m.code ein JOIN nicht mit einer Tabelle, sondern mit einer in der SQL-Anweisung verpackten Parameterliste durchführen
ein Stück weiter bin ich gekommen mit: SELECT c.bezeichner, m.wert, m.code, CASE m.code WHEN '31' THEN 'text1' WHEN '32' THEN 'text2' WHEN '33' THEN 'text3' ... END FROM table1 m LEFT JOIN table2 c ON c.id = m.code Dies fügt mir die Bezeichner (text1, text2 und text3) als zusätzliche Spalte ein. Die Informationen sind nun alle da, leider noch auf 2 Spalten verteilt (CASE-Spalte und Spalte c.bezeichner)
Dann vielleicht so?
1 | SELECT |
2 | CASE c.bezeichner IS NULL |
3 | THEN |
4 | CASE m.code |
5 | WHEN '31' THEN 'text1' |
6 | WHEN '32' THEN 'text2' |
7 | WHEN '33' THEN 'text3' |
8 | ... |
9 | END |
10 | ELSE c.bezeichner |
11 | END AS bezeichner |
12 | m.wert, |
13 | m.code |
14 | FROM table1 m |
15 | LEFT JOIN table2 c |
16 | ON c.id = m.code |
Oder eventuell so:
1 | SELECT |
2 | c2.bezeichner |
3 | m.wert, |
4 | m.code |
5 | FROM table1 m |
6 | LEFT JOIN ( |
7 | SELECT c.id, c.bezeichner FROM table2 c |
8 | UNION SELECT '31', 'text1' |
9 | UNION SELECT '32', 'text2' |
10 | UNION SELECT '33', 'text3' |
11 | ) AS c2 |
12 | ON c2.id = m.code |
(Beides nicht getestet ...)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.