AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Abfrage / Where Klausel mehrere Werte
Thema durchsuchen
Ansicht
Themen-Optionen

Abfrage / Where Klausel mehrere Werte

Ein Thema von SimStar001 · begonnen am 22. Feb 2010 · letzter Beitrag vom 22. Feb 2010
Antwort Antwort
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#1

Abfrage / Where Klausel mehrere Werte

  Alt 22. Feb 2010, 18:20
Datenbank: MYSQL • Version: 5.0.41 • Zugriff über: PHP
Hallo ich habe hier ein kleines Problem mit einer Abfrage.
Und zwar programmiere ich ein kleines Backend System mit internen Mailversand, usw.
Wenn jertzt Mails versand werden, kann man mehr als einen Benutzer angeben, an den die Mail verschickt werden soll.
Nun habe ich eine Liste mit Benutzernamen oder Namen und möchte mittels einer Abfrage nun alle IDs herausfinden.
Meine Tabelle besitzt unter anderem:
ID (Int), Username (VARCHAR (50)) und Name (VARCHAR (50))

Meine bisherige Abfrage sieht bis jetzt so aus:

SELECT ID FROM backend_login WHERE ((Username = 'Marco') OR (Name = 'Marco')) OR ((Username = 'Moritz') OR (Name = 'Moritz')) OR ((Username = 'Tobi') OR (Name = 'Tobi')) Diese Abfrage liefert mir somit immer nur ein Ergebnis.
Ich möchte aber alle IDs zu den Namen bzw. Usernamen haben, die ich in der Where Klausel eingefügt habe.
Ich glaube vor einiger Zeit einmal etwas genau zu dieser Situation gelesen zu haben, aber kenn mich nicht mehr erinner wo, geschweige denn wonach ich nun genau suchen soll.

Wie muss die WHERE Klausel für den angesprochenen Sachverhalt aussehen?


LG Marco
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Abfrage / Where Klausel mehrere Werte

  Alt 22. Feb 2010, 18:23
Vielleicht so...
SQL-Code:
SELECT ID
FROM backend_login
WHERE (Username = 'Marco'  AND Name = 'Marco')
   OR (Username = 'MoritzAND Name = 'Moritz')
   OR (Username = 'Tobi'   AND Name = 'Tobi')
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Abfrage / Where Klausel mehrere Werte

  Alt 22. Feb 2010, 18:25
Grundsätzlich genau so, wenn auch die ganzen Klammern nicht unbedingt nötig sind.
Es könnte aber an Leerzeichen liegen. Trimme mal die Felder
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Abfrage / Where Klausel mehrere Werte

  Alt 22. Feb 2010, 18:34
Es ist wahrscheinlich nur Geschmackssache, aber ich würde das eher so formulieren:
SQL-Code:
SELECT
  ID
FROM
  backend_login
WHERE
  Username IN ('Marco', 'Moritz', 'Tobi') OR
  Name IN ('Marco', 'Moritz', 'Tobi')
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Abfrage / Where Klausel mehrere Werte

  Alt 22. Feb 2010, 18:38
Oder
SQL-Code:
SELECT
  ID
FROM
  backend_login
WHERE
  Trim(Username) IN ('Marco', 'Moritz', 'Tobi') OR
  Trim(Name) IN ('Marco', 'Moritz', 'Tobi')
Markus Kinzler
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#6

Re: Abfrage / Where Klausel mehrere Werte

  Alt 22. Feb 2010, 18:39
Zitat:
SELECT ID
FROM backend_login
WHERE (Username = 'Marco' AND Name = 'Marco')
OR (Username = 'Moritz' AND Name = 'Moritz')
OR (Username = 'Tobi' AND Name = 'Tobi')
Das funktioniert auch nicht so wie ich es gerne möchte. Mit dieser Abfrage bekomme ich z.b. den letzten Eintrag der gefunden wird.
Nochmal zur Erklärung:
1. Name und Username sind unterschiedlich, deshalb da auch "OR"
2. An leerzeichen liegt es nicht, diese habe ich vorher so bearbeitet, dass auch das richtige gefunden werden muss.

SELECT ID FROM backend_login WHERE ((Username = 'Marco') OR (Name = 'Marco')) OR ((Username = 'Moritz') OR (Name = 'Moritz')) OR ((Username = 'Tobi') OR (Name = 'Tobi')) Es sollte dann eine Liste mit genau zwei Ergebnissen (1,2) geliefert werden bei der Abfrage.


[EDIT]

Vielen Dank, genau das wars was ich meinte und gesucht habe:

SQL-Code:
SELECT
  ID
FROM
  backend_login
WHERE
  Username IN ('Marco', 'Moritz', 'Tobi') OR
  Name IN ('Marco', 'Moritz', 'Tobi')

LG Marco
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz