Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Abfrage / Where Klausel mehrere Werte (https://www.delphipraxis.net/148098-abfrage-where-klausel-mehrere-werte.html)

SimStar001 22. Feb 2010 18:20

Datenbank: MYSQL • Version: 5.0.41 • Zugriff über: PHP

Abfrage / Where Klausel mehrere Werte
 
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:

SQL-Code:
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

omata 22. Feb 2010 18:23

Re: Abfrage / Where Klausel mehrere Werte
 
Vielleicht so...
SQL-Code:
SELECT ID
FROM backend_login
WHERE (Username = 'Marco' AND Name = 'Marco')
   OR (Username = 'Moritz' AND Name = 'Moritz')
   OR (Username = 'Tobi'  AND Name = 'Tobi')

mkinzler 22. Feb 2010 18:25

Re: Abfrage / Where Klausel mehrere Werte
 
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

DeddyH 22. Feb 2010 18:34

Re: Abfrage / Where Klausel mehrere Werte
 
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')

mkinzler 22. Feb 2010 18:38

Re: Abfrage / Where Klausel mehrere Werte
 
Oder
SQL-Code:
SELECT
  ID
FROM
  backend_login
WHERE
  Trim(Username) IN ('Marco', 'Moritz', 'Tobi') OR
  Trim(Name) IN ('Marco', 'Moritz', 'Tobi')

SimStar001 22. Feb 2010 18:39

Re: Abfrage / Where Klausel mehrere Werte
 
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.

SQL-Code:
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:53 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