mySQL PHP Datenbankabfrage mit Select

Hallo,

ich lasse in einem PHP-Skript mit folgender Anweisung Daten aus einer mySQL-DB auslesen:

„SELECT * FROM $tabellenname ORDER BY company ASC“;

Funktioniert auch soweit.

Jetzt möchte ich zum Beispiel das nur die Datensätze gewählt werden, bei denen der Name der company mit A beginnt.

Kann mir jemand helfen, wie die entsprechende Anweisung dann lauten muß?

Danke im voraus,

Jan

Hi,

„SELECT * FROM $tabellenname WHERE company LIKE ‚A%‘ ORDER BY company ASC“;

ggfls auch aus PhP mit Variable:

„SELECT * FROM $tabellenname WHERE company LIKE '“.$Variable."’ ORDER BY company ASC";

Gruß

Hallo,
danke für die schnelle Antwort.
Jetzt habe ich natürlich gleich die nächste Frage:

Wie kann ich die die Namen mit mehreren unterschiedlichen Anfangsbuchstaben aus einer Tabelle selektieren?
Ich habe es mit:

SELECT * FROM prospekt WHERE company LIKE ‚x%‘ OR WHERE company LIKE ‚y%‘ OR WHERE company LIKE ‚z%‘ ORDER BY company ASC

und verschiedenen Varianten versucht, das funkt aber nicht.
Kannst Du oder sonst jemand weiterhelfen?

Danke im voraus,
Jan

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Guten Morgen,

der Syntax:

SELECT * FROM prospekt WHERE company LIKE ‚x%‘ OR WHERE
company LIKE ‚y%‘ OR WHERE company LIKE ‚z%‘ ORDER BY company
ASC

ist nicht korrekt. WHERE kommt nur bei der ersten Anweisung, danach kommt AND oder OR. Für eine Abfrage die mehrere Anfangsbuchstaben verwendet, würde ich den Befehl SUBSTR() in Verbinung mit IN verwenden.

Dieser baut sich so auf: SUSBTR([spaltenname],[position_start],[anzahl_stellen])

Würde dann bei Deiner Abfrage wir folgt aussehen:

SELECT \* 
FROM prospekt 
WHERE SUBSTR(company,1,1) IN ('X','Y','Z') 
ORDER BY company ASC

Wenn noch Groß-/Kleinschreibung keine Rolle spielen sollen ggfls. noch zusätzlich normalisieren:

SELECT \* 
FROM prospekt 
WHERE UPPER(SUBSTR(company,1,1)) IN UPPER(('X','Y','Z'))
ORDER BY company ASC

Gruß
Andreas

Hallo Andreas,

danke für die prompte Antwort. Ich habe versucht Deine Lösung wie folgt umzusetzen:

SELECT * FROM prospekt WHERE UPPER(SUBSTR(company,1,1)) IN UPPER ((‚X‘,‚Y‘,‚Z‘)) ORDER BY company ASC

Bekomme dann aber folgende Meldung:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\LP67\lp67_prospekt_list.php on line 31

Und weiss nicht, woran es liegt.
Ich habe aber folgende andere Lösung gefunden, sieht nicht ganz so elegant aus, scheint aber zu funktionieren:

SELECT * FROM prospekt WHERE company LIKE ‚x%‘
UNION SELECT * FROM prospekt WHERE company LIKE ‚y%‘
UNION SELECT * FROM prospekt WHERE company LIKE ‚z%‘
ORDER BY company ASC

Gruß,
Jan

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,
danke für die schnelle Antwort.
Jetzt habe ich natürlich gleich die nächste Frage:

Wie kann ich die die Namen mit mehreren unterschiedlichen
Anfangsbuchstaben aus einer Tabelle selektieren?
Ich habe es mit:

SELECT * FROM prospekt WHERE company LIKE ‚x%‘ OR WHERE
company LIKE ‚y%‘ OR WHERE company LIKE ‚z%‘ ORDER BY company
ASC

und verschiedenen Varianten versucht, das funkt aber nicht.
Kannst Du oder sonst jemand weiterhelfen?

Versuchs mal mit
SELECT * FROM prospekt WHERE (company LIKE ‚x%‘) OR (company LIKE ‚y%‘)
usw.

Die andere Variante von Andreas ist aber auch nett :wink:

Und weiss nicht, woran es liegt.

Könnte daran liegen, dass ich selber eher im Oracle statt im MySql-Umfeld mich bewege und damit der Befehl SUBSTR() wohl keine allgemeine SQL-Syntax ist. Da Du ja eine funtkionierende Lösung gefunden hast denke ich mal ist das dann auch in Ordnung.

Gruß
Andreas