Wie nach substrings suchen?

Ist es möglich zwei SQL-Abfragen zu einer Abfrage zu vereinen?


Ist es möglich diese beiden Abfragen in einer Abfrage zu vereinen und dann die Ergebnisliste alphabetisch zu sortieren?

UNION ALL und das dann sortieren. Im Prinzip:

select * from (select1 union all select2) ORDER BY

Für select1 und select2 setzt Deine jetzigen Selects ein. Möglicherweise geht das in Deinem Falle sogar noch einfacher, hab ich jetzt nicht geprüft (passender JOIN, sodaß Dein 2tes Select das vom ersten gleich mitliefert)
 
Werbung:
Wenn ich fragen darf: Was hast du eigentlich vor?

Zum Beispiel für Wienau gibt es in der Datenbank keine alternativen Namen.
 
Sorry für die späte Antwort, mußte mich erst einmal sortieren.

akretschmer schrieb:
select * from (select1 union all select2) ORDER BY
Danke dafür, das werde ich ausprobieren.

Hony% schrieb:
Was hast du eigentlich vor?
Es soll nur nach deutschen Ortsbezeichnungen gesucht werden.
Die Geonames Datenbank ist jedoch mehrsprachig aufgebaut und die Ortsnamen sind in 3 Spalten verteilt:

Data.Ort (3 Millionen Einträge)
Hier finden sich alle Orte in ihrer jeweiligen Landessprache mit Umlauten und Sonderzeichen.

Data.OrtISO (3 Millionen Einträge)
Hier sind alle englischsprachigen Ortsbezeichnungen ohne Sonderzeichen zu finden.

International.OrtDE (15 Tausend Einträge - aus alternateNames.txt extrahiert)
Deutsche Ortsbezeichnungen, die von den internationen Ortsbezeichnung abweichen.
(z.B. Neu-Delhi statt New Delhi, Wien statt Vienna usw.)

Bislang wurde deshalb mehrmals nach einem Ort wie folgt gesucht:

Für Orte in DE, AT und CH:
1. Data.Ort
2. International.OrtDE (falls zuvor kein Fund)

Für internationale Orte (außerhalb DE, AT und CH):
1. Data.OrtISO
2. International.OrtDE (falls zuvor kein Fund)

Weil zu aufwendig, halte ich es für sinnvoller aus den 3 Spalten 1 Ortsspalte = Data.Ort zu machen, damit nur noch eine SQL Abfrage nötig ist. Folgende SQL Befehle funktionieren jedoch nicht:

Update Data
SET Data.Ort = Data.OrtISO
WHERE Data.ID_Sprache != 'DE'

und danach:

Update Data
SET Data.Ort = International.OrtDE
WHERE Data.ID_Sprache != 'DE'

Ergebnis: Near ".": Syntax Error

Mit welchen SQL Befehlen würde es funktionieren?
 
Zuletzt bearbeitet:
Ich vergaß zu erwähnen -> in den Spalten Data.Ort, Data.OrtM und International.OrtDE haben die vorhandenen Orte jeweils die gleiche ID.
 
Den ersten Fehler habe ich gefunden, richtig ist:

Update Data
Set Ort = Data.OrtISO
WHERE Data.ID_Land != 'DE' AND Data.ID_Land != 'AT' AND Data.ID_Land != 'CH'
 
Werbung:
Über ein Workaround habe ich es jetzt hinbekommen:

1. (kopiert alle MultiOrtM nach Data.OrtISO)
UPDATE Data
SET OrtISO = (SELECT Multi.OrtM FROM Multi WHERE Data.ID = Multi.ID)
WHERE EXISTS (select * from Multi where Data.ID = Multi.ID)

2. (kopiert alle Data.OrtISO nach Data.Ort, jedoch nicht wenn Data.Ort DE, AT oder CH)
UPDATE Data
SET Ort = Data.OrtISO
WHERE Data.IDL != 'DE' AND Data.IDL != 'AT' AND Data.IDL != 'CH'

Danke und Grüße,
Datenbeisser
 
Zurück
Oben