Mehrere Spalten mit einem Wert vergleichen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

reenyman
Beiträge: 1
Registriert: Di, 26.07.2016 12:55

Mehrere Spalten mit einem Wert vergleichen

Beitrag von reenyman » Di, 26.07.2016 13:02

Hallo zusammen,

ich bin kompletter Base / SQL Neuling und suche mir jetzt nach vergeblicher Google-Recherche bei euch Hilfe. Wahrscheinlich habe ich einfach nur falsch gegoogelt, aber ich finde keine Antwort auf meine Frage.

Ich habe folgende SQL-Abfrage gebastelt:

Code: Alles auswählen

SELECT * FROM "Projekte" WHERE "Datum von" >= '2016-06-01' AND "Datum bis" <= '2016-08-30' AND ( "Artikel " = '625545' OR "Artikel 1" = '625545' OR "Artikel 2" = '625545' OR "Artikel 3" = '625545' OR "Artikel 4" = '625545' OR "Artikel 5" = '625545' OR "Artikel 6" = '625545' OR "Artikel 7" = '625545' OR "Artikel 8" = '625545' OR "Artikel 9" = '625545' OR "Artikel 10" = '625545' OR "Artikel 11" = '625545' OR "Artikel 12" = '625545' OR "Artikel 13" = '625545' OR "Artikel 14" = '625545' OR "Artikel 15" = '625545' OR "Artikel 16" = '625545' OR "Artikel 17" = '625545' OR "Artikel 18" = '625545' OR "Artikel 19" = '625545' OR "Artikel 20" = '625545' OR "Artikel 21" = '625545' OR "Artikel 22" = '625545' OR "Artikel 23" = '625545' OR "Artikel 24" = '625545' OR "Artikel 25" = '625545' OR "Artikel 26" = '625545' OR "Artikel 27" = '625545' OR "Artikel 28" = '625545' OR "Artikel 29" = '625545' OR "Artikel 30" = '625545' OR "Artikel 31" = '625545' OR "Artikel 32" = '625545' OR "Artikel 33" = '625545' OR "Artikel 34" = '625545' OR "Artikel 35" = '625545' OR "Artikel 36" = '625545' OR "Artikel 37" = '625545' OR "Artikel 38" = '625545' OR "Artikel 39" = '625545' OR "Artikel 40" = '625545' OR "Artikel 41" = '625545' OR "Artikel 42" = '625545' OR "Artikel 43" = '625545' OR "Artikel 44" = '625545' OR "Artikel 45" = '625545' OR "Artikel 46" = '625545' OR "Artikel 47" = '625545' OR "Artikel 48" = '625545' OR "Artikel 49" = '625545' OR "Artikel 50" = '625545' )
Die Spalten Artikel - Artikel 50 werden also mit einer Artikelnummer verglichen, aber wer diese Abfrage liest, der lacht sich sicherlich kaputt. Ich würde gerne die Artikelnummer nur einmal eintragen müssen.

Zweite Frage: Ist es irgendwie möglich per Klick auf einen Button auf dem Desktop die Abfrage zu starten und über ein Fenster mit der Frage "Welche Artikelnummer soll überprüft werden?" die artikelnummer einzugeben, welche dann mit dem Befehl überprüft wird?

Sollte die zweite Frage zu aufwendig sein, so würde mir Hilfe für die erste schon reichen.

Vielen Dank im Voraus.

Liebe Grüße
René

RobertG
*******
Beiträge: 1735
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Mehrere Spalten mit einem Wert vergleichen

Beitrag von RobertG » Di, 26.07.2016 16:50

Hallo René,

Code: Alles auswählen

SELECT * FROM "Projekte" WHERE "Datum von" >= '2016-06-01' AND "Datum bis" <= '2016-08-30' AND '625545' IN ( "Artikel ", "Artikel 1", "Artikel 2" )
könnte da der Weg sein, den Du suchst.

Code: Alles auswählen

SELECT * FROM "Projekte" WHERE "Datum von" >= '2016-06-01' AND "Datum bis" <= '2016-08-30' AND :Artikelnummer IN ( "Artikel ", "Artikel 1", "Artikel 2" )
erzeugt ein Abfragefenster nach der Artikelnummer, wenn Du die Abfrage auslöst. Allerdings verträgt die Parameterabfrage keine Leerzeichen und auch keine Fragezeichen. Deswegen müsste der Parameter für Deine Abfrage etwas umgeschrieben werden:

Code: Alles auswählen

SELECT * FROM "Projekte" WHERE "Datum von" >= '2016-06-01' AND "Datum bis" <= '2016-08-30' AND :Welche_Artikelnummer_soll_überprüft_werden IN ( "Artikel ", "Artikel 1", "Artikel 2" )
Warum hat Deine Tabelle eigentlich 51 Felder, in denen eine Artikelnummer eingetragen werden kann? Wenn mehrere Artikel für etwas eingetragen werden, so gehören diese Artikel in eine separate Tabelle in ein Feld, nicht nebeneinander in eine Tabelle. Poste doch einmal die Tabellenbeziehungen Deiner Datenbank.

Gruß

Robert

Antworten