Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL abfrage aus 2 Tabellen mit LIKE

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • maclaim1988
    hat ein Thema erstellt SQL abfrage aus 2 Tabellen mit LIKE.

    SQL abfrage aus 2 Tabellen mit LIKE

    Hallo Leute,

    ich habe zurzeit eine SQL - Abfrage über eine Spalte. Es wird über ein Inputfeld ein "Suchwort" eingegeben und dieses Word wird in eine Variable $name geschrieben. Dann wird über diese SQL Abfrage das Wort in der Tabelle a_name gesucht und ausgegeben. (Funktioniert mit diesem CODE!)
    Siehe Code:
    PHP-Code:
    $abfrage "SELECT * FROM artikel WHERE a_name LIKE '%$name%'"

    Nun möchte ich dass das eingegebene Suchwort nicht nur in der Spalte a_name sondern auch in Spalte a_tags gesucht wird. Ich habe mehrere Varianten probiert. Ich konnte mit meiner Abfrage jedoch nur in einer Spalte suchen oder bekam Fehlermeldungen.

    Ausschnit meiner versuchten Varianten:
    PHP-Code:
    $abfrage "SELECT * FROM artikel WHERE a_name, a_tags LIKE '%$name%'"
    PHP-Code:
    $abfrage "SELECT * FROM artikel WHERE (a_name LIKE '%$name%') or(a_tags LIKE '%$name%') "

    Mein Problem ist das ich die Abfrage nicht abgeändert bekomme so dass ich 2 Tabellen durchsuche!

    Über einen Tipp oder Codeschnipsel wäre mir sehr geholfen.


    Gruß Andreas

  • Chriz
    antwortet
    Diese Abfrage von dir:
    Code:
    $abfrage = "SELECT * FROM artikel WHERE (a_name LIKE '%$name%') or(a_tags LIKE '%$name%') ";
    ist doch korrekt, entweder $name kommt in a_name oder a_tags vor? Das ist doch was du suchst ...

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    Zitat von maclaim1988 Beitrag anzeigen
    AHmm ich habe einen Kollegen gefragt der sich noch sehr gut auskennt.
    Das ist wohl zu bezweifeln ...

    Nun habe ich die Lösung und funktioniert alles super für die die eventuel das gleiche Problem haben.
    PHP-Code:
    WHERE CONCAT(a_namea_tagsLIKE '%$name%' 
    Wenn du nach lamer suchst, und a_name den Wert 'angela' und a_tags den Wert 'merkel' enthält - dann bekommst du damit einen Treffer.

    Ich bezweifle, dass dies ein beabsichtigtes Ergebnis ist.
    (Falls doch, dann war deine Problembeschreibug nicht nur schlecht, sondern unterirdisch miserabel.)

    Einen Kommentar schreiben:


  • maclaim1988
    antwortet
    AHmm ich habe einen Kollegen gefragt der sich noch sehr gut auskennt. Nun habe ich die Lösung und funktioniert alles super für die die eventuel das gleiche Problem haben.

    Das ist die Lösung: CONCAT(a_name, a_tags)
    PHP-Code:
    $abfrage "SELECT * FROM artikel WHERE CONCAT(a_name, a_tags) LIKE '%$name%'"

    Einen Kommentar schreiben:


  • maclaim1988
    antwortet
    AHm ja ich habe nur so kleine Syntax Fehler drin die bekomme ich ja selbst immer wieder raus


    Ich habe mal meinen kompletten Code gepostet... mir ist bewusst das ich einige fehlende Sicherheitspunkte habe, darum gehts mir hier aber erst mal nicht.

    ich habe auch schon die Abfrage unter meine andere Abfrage kopiert und WHERE a_name durch WHERE a_tag ersetzt doch im $result wird denn immer nur die letzte Abfrage gespeichert.... :



    Code Ausschnitt:
    PHP-Code:
      if($name == '') {
        echo 
    'Sie haben im Suchfeld nichts ausgefüllt!';
        }
        
        else{
        
          
    $abfrage "SELECT 
                    * 
                    FROM artikel 
                    WHERE a_name 
                    LIKE '%
    $name%'"
          
    $result mysql_query($abfrage) OR die("<pre>\n".$abfrage."</pre>\n".mysql_error()); 
          
          
            if(
    $row mysql_fetch_assoc($result)) {
                
    $abfrage "SELECT 
                            * 
                            FROM artikel 
                            WHERE a_name 
                            LIKE '%
    $name%'"
                
    $result mysql_query($abfrage) OR die("<pre>\n".$abfrage."</pre>\n".mysql_error()); 

            
                    while (
    $row mysql_fetch_assoc($result)) {
                    
    # HTML TABELLE MIT EINTRÄGEN
                    

            } 
        
            else { 
                echo 
    "Es wurde noch kein Eintrag zu \"<u>$name</u>\" in der Datenbank gefunden."."<BR>";
                echo 
    "Bitte nehmen Sie sich doch kurz Zeit"."<BR>"."<BR>";
                include 
    'register.php';
            }
        } 

    PS: Ich habe immer noch kein Lösung gefunden wie ich beide abfrage... manchmal steh ich echt aufem schlauch ^^


    Gruß Andreas

    Einen Kommentar schreiben:


  • Asipak
    antwortet
    Was sagt denn mysql_error() dazu?

    Debugging:SQL - PHP.de Wiki

    Einen Kommentar schreiben:


  • maclaim1988
    antwortet
    Sorry ich habe mich verschrieben ich meine Spalten

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    Meinst du wirklich Tabellen oder Spalten (so wie in deinen Codebeispielen)?

    Mach halt eine Abfrage pro Tabelle.

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    Verfasse bitte erst mal deine Problembeschreibung so, dass klar erkennbar wird, was du eigentlich erreichen willst.

    Einen Kommentar schreiben:

Lädt...
X