Zum Inhalt springen

[DB] SELECT Abfrage


bnA

Empfohlene Beiträge

Hallo, ich hab ein Problem bei einer etwas komplizierteren SELECT Abfrage

Also die Abfrage sieht momentan so aus


select 

NUR.VLNDN001.LAND_LANDKUERZEL, 

NUR.VLNDN001.LNDN_NAME, 

NUR.VLAND001.LAND_ISO_CODE_3, 

NUR.VLNDN001.LNDN_SPRACHENSL

FROM

NUR.VLNDN001, NUR.VLAND001 

WHERE NUR.VLNDN001.LNDN_SPRACHENSL = 'D' 


AND upper(NUR.VLNDN001.LAND_LANDKUERZEL) = upper('DEU') 

OR upper(NUR.VLNDN001.LNDN_NAME) = upper('DEU') 

OR upper(NUR.VLAND001.LAND_ISO_CODE_3) = upper('DEU') 

ORDER BY NUR.VLNDN001.LAND_LANDKUERZEL ASC;

Bei dem Beispiel suche ich nach 'DEU' und das funktioniert zum Teil auch, nur dass er nicht beachtet, dass er nur die Spalten mit

NUR.VLNDN001.LNDN_SPRACHENSL = 'D'

nehmen soll

Folgende Ausgabe:

deutx7.png

Wenn ich z.B. nach Österreich suche, was in der 2. Spalte stehen sollte bekomme ich folgende Ausgabe:

sterreichgl2.png

Und wenn ich nach Einträgen suche, die in der ersten Spalte stehen sollten, dann bekomme ich folgendes, wenn ich z.B. nach 'A' suche:

72027201pm1.png

Das Prinzip der SQL Abfrage ist, dass ich nen Suchfeld (TextField) habe und er egal was eingegeben wurde, alle Spalten nach dem Eintrag durchsucht.

Aber wie ihr gesehen habt, bekomme ich nicht die gewünschten Ergebnisse.

Könnte mir eventuell jmd. helfen?

Daankeschön :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

Du hast kein Join Kriterium angegeben, weshalb Du ein sog. kartesisches produkt bekommst (jede Zeile der einen Tabelle wird mit jeder Zeile der anderen verknüpft). Daher resultieren deine unerwarteten Ergebnisse.

Du brauchst eine Bedingung, die deine beiden Tabellen explizit miteinander verknüpft.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay, dann hab ich die 2 Tabellen jetzt so verknüpft

select 

NUR.VLNDN001.LAND_LANDKUERZEL, 

NUR.VLNDN001.LNDN_NAME, 

NUR.VLAND001.LAND_ISO_CODE_3, 

NUR.VLNDN001.LNDN_SPRACHENSL

FROM

NUR.VLNDN001, NUR.VLAND001 

WHERE NUR.VLNDN001.LAND_LANDKUERZEL = NUR.VLNDN001.LAND_LANDKUERZEL

AND upper(NUR.VLNDN001.LAND_LANDKUERZEL) = upper('Österreich') 

OR upper(NUR.VLNDN001.LNDN_NAME) = upper('Österreich') 

OR upper(NUR.VLAND001.LAND_ISO_CODE_3) = upper('Österreich') 

AND NUR.VLNDN001.LNDN_SPRACHENSL = 'D' 

ORDER BY NUR.VLNDN001.LAND_LANDKUERZEL ASC;

Leider bringt das immernoch nicht den gewünschten Effekt

LAND_LANDKUERZEL ist logischerweise in beiden Tabellen vorhanden und auch gleich...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jetzt funktioniert aber schonmal die suche nach

NUR.VLAND001.LAND_ISO_CODE_3

Also wenn ich da z.B. 'DEU' eingebe, dann geht das.

Kann das iregndwie an der Reihenfolge der OR's liegen?

hatte auch oben die falsche Zeile geschrieben, dieses JOIN Ding heißt natürlich


WHERE NUR.VLNDN001.LAND_LANDKUERZEL = NUR.VLAND001.LAND_LANDKUERZEL

Bearbeitet von bnA
Link zu diesem Kommentar
Auf anderen Seiten teilen

Kann das iregndwie an der Reihenfolge der OR's liegen?

Vermutlich. Da fehlt eine Klammer:


AND [b]([/b]upper(NUR.VLNDN001.LAND_LANDKUERZEL) = upper('Österreich') 

OR upper(NUR.VLNDN001.LNDN_NAME) = upper('Österreich') 

OR upper(NUR.VLAND001.LAND_ISO_CODE_3) = upper('Österreich')[b])[/b]

Gleiches bei der anderen Bedingung.

Interessant find ich allerdings, dass in dem Feld Länderkürzel bzw. ISO Kürzel wirklich der komplette Landesname stehen kann. da solltest Du mal deine Daten bereinigen, denn wenn das wirklich so ist kann man sich diese Aufteilung ja auch direkt schenken und alles in eine Spalte schreiben :upps

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke, ich werde das am Montag, wenn ich wieder arbeiten muss mal ausprobieren.

Und nein, in der Spalte LANDUERZEL oder ISO_CODE kann nicht der ganze Ländername stehen,

ich will nur erreichen, dass egal was in das Suchfeld eingegeben wird,

alle Spalten nach dem Suchtext durchsucht werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo guten Morgen,

bin wieder auf der Arbeit.

Also die Suche ist nur erfolgreich, wenn ich nach dem

LAND_ISO_CODE_3 aus der Tabelle VLAND001 suche.

Bei der Suche nach anderen Spalten liefert er mir wie gesagt dieses komische Ergebnis zurück, weiß nciht ob man das dieses kartesische Produkt nennt.

Was genau ist diese Volltextindizierung und wie funktioniert das? Bin nicht so der Crack in Datenbankprogrammierung, werde aber schonmal danach suchen. Bin aber trotzdem über Antworten dankbar.

Schönen Start in die Woche wünsche ich

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...