@Jan_Steudel posted a new topic, subject "mySQL PHP Datenbankabfrage mit Select". It read:

   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

@Andreas_L_118ec4 replied

    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ß

Then @Jan_Steudel said

    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]

So @Andreas_L_118ec4 replied

    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:
    [code] 
        SELECT \* 
        FROM prospekt 
        WHERE SUBSTR(company,1,1) IN ('X','Y','Z') 
        ORDER BY company ASC
        
    [/code]
    
    Wenn noch Groß-/Kleinschreibung keine Rolle spielen sollen ggfls. noch zusätzlich normalisieren:
    [code] 
        SELECT \* 
        FROM prospekt 
        WHERE UPPER(SUBSTR(company,1,1)) IN UPPER(('X','Y','Z'))
        ORDER BY company ASC
        
    [/code]
    
    Gruß  
    Andreas

So @Jan_Steudel replied

    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]

To which @Marvin_c530f3 replied

    > 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

After which, @Andreas_L_118ec4 added

    > 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


{'source': 'discourse', 'url': 'https://www.wer-weiss-was.de/t/mysql-php-datenbankabfrage-mit-select/3993756', 'title': 'mySQL PHP Datenbankabfrage mit Select', 'views': 456, 'has_accepted_answer': False, 'word_count': 833, 'like_count': 0, 'reply_count': 5, 'participant_count': 3, 'posts': 7, 'tags': '', 'author': '@Jan_Steudel', 'participants': '@Jan_Steudel, @Andreas_L_118ec4, @Marvin_c530f3', 'image_url': [None], 'created_at': '2007-03-22T11:27:42.000Z', 'last_posted_at': '2007-03-27T07:17:57.000Z'}