Abfrage

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

  • Abfrage

    Hallo zusammen,

    kann mir einer weiterhelfen, warum läuft diese Abfrage nicht???

    $sql = "SELECT * FROM events, location WHERE events.locID=location.locID ORDER BY name" AND name LIKE '%$query%' OR datum LIKE '%$query%' OR Uhr LIKE '%$query%'";

    Ziel soll sein, aus der Tabelle events alle Einträge rauszuholen, nach welchen im Feld $query eingegeben werden...!
    Und aus der Tabelle alle Einträge WHERE events.locID=location.locID sind!

    Ich bin ziemlich neu in der Tematik mysql, und weiß leider nicht mehr weiter.....

    Vielen Dank
    Robert

  • #2
    aber dass du deine order by klausel nicht mitten in eine where klausel packen sollst weißt du schon oder?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Ja klar, zur erst sah die Abfrage so aus:

      $sql = "SELECT * FROM events, location WHERE events.locID=location.locID ORDER BY"

      Korrekter währe natürlich

      $sql = "SELECT * FROM events, location WHERE events.locID=location.locID ORDER BY name AND name LIKE '%$query%' OR datum LIKE '%$query%' OR Uhr LIKE '%$query%' ORDER BY name";

      Aber das läuft irrgendwie auch nicht!!!!!!

      Grüße
      Robert

      Kommentar


      • #4
        sortierkriterien werden durch komma getrennt
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Alles klar,

          ich habe das jetzt nochmal genau geprüft.

          Diese Anfrag läuft schon mal:

          $sql = "SELECT * FROM events, location WHERE events.locID=location.locID AND name LIKE '%$query%' OR datum LIKE '%$query%' OR Uhr LIKE '%$query%' ORDER BY name";

          Aber, ich bekomme jetzt mehr Einträge als tatsächlich in der Tabelle vorhanden sind.
          Das heißt:
          - der Teil (events.locID=location.locID) trifft zu --> Eintag
          - der Teil (name LIKE '%$query%') trift zu --->Eintag
          - der Teil (OR datum LIKE '%$query%') trift zu --->Eintrag
          - der Teil (OR Uhr LIKE '%$query%') trifft zu --->Eintrag

          Das SELECT müßte abgebrochen werden , wenn einer der vier Argumente zutrifft!!!!!

          Grüße
          Robert

          Kommentar


          • #6
            weiß nich genau was du meinst, aber probier mal SELECT DISTINCT *
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              änder das mal dahin ab:
              PHP-Code:
              $sql "SELECT * FROM events, location WHERE events.locID=location.locID OR tabelle.name LIKE '%$query%' OR tabelle.datum LIKE '%$query%' OR tabelle.Uhr LIKE '%$query%' ORDER BY tabelle.name";
              $result=mysql_query($sql) or die(mysql_error()); 
              Kissolino.com

              Kommentar


              • #8
                Hallo,

                habe die Anfrage abgeändert.
                Aber leider hat das auch das nicht den gewünschten effecket gebracht.
                Ich versuche es mal etwas anders zu erkäuter:

                Ich habe zwei Tabellen (A+B)
                In Tabelle A stehen diverse Daten und ein Primärschlüssel (ID) zu Tabelle B.
                Jetzt möchte ich über eine Suche (Z.B. Name oder Datum, -das sind Felder in Tabelle A - eine suche starten.
                Wenn einsprächende Daten gefunden werden, soll über die ID(Primärschlüssel) die entsprechenden Daten aus Tabelle B dazukommen und über PHP ausgegeben werden.

                Leider wertet mein SQL Statment das Query nicht richtig aus.
                Ich glaube, ich frage falsch....

                Viele Dank für die Hilfe

                Robert

                Kommentar


                • #9
                  PHP-Code:
                  $sql "
                  SELECT events.*, location.*  
                  FROM events, location 
                  WHERE 
                  events.locID=location.locID 
                  AND 
                  (tabelle.name LIKE '%
                  $query%' OR tabelle.datum LIKE '%$query%' OR tabelle.Uhr LIKE '%$query%') 
                  ORDER BY tabelle.name"
                  ;

                  $result=mysql_query($sql) or die(mysql_error()); 
                  tabelle.XXX musst du natürlich durch den namen deiner tabelle ersetzen. das sollte von der logik her richtig sein.

                  ansonsten gib bitte konkretere hinweise, mit "dat geht nich" kommt hier keiner weiter
                  Kissolino.com

                  Kommentar


                  • #10
                    Klasse, genau so hatte ich mir das vorgestellt. Vielen Dank.

                    Kannst Du mir auch noch veraten, was ich falsch gemacht habe????

                    Wäre wirklich klasse.

                    Vielen Dank

                    robert

                    Kommentar


                    • #11
                      2 sachen:

                      1. du hast deine frage nicht präzise formuliert
                      2. du hast meinen ersten code einfach so übernommen der war nicht ganz korrekt, konnte er auch nicht, wegen 1.

                      PHP-Code:
                      SELECT events.*, location.*  // hole aus beiden tabellen alle felder
                      FROM eventslocation           // welche tabellen
                      WHERE 
                      events
                      .locID=location.locID   // erste bedingung
                      AND 
                      // alles was nun in der klammer steht wird mit AND verbunden
                      // ohne klammer wäre nur der erste folgende ausduck mit AND verknüpft
                      (tabelle.name LIKE '%$query%' OR tabelle.datum LIKE '%$query%' OR tabelle.Uhr LIKE '%$query%'
                      ORDER BY tabelle.name"; 
                      das ganze lässt sich auch mit einem JOIN ausdrücken => s. mysql.de => doku
                      Kissolino.com

                      Kommentar


                      • #12
                        DANKE

                        Kommentar

                        Lädt...
                        X