Tabellenabfrage

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

  • Tabellenabfrage

    Hallo,

    auf einer Website möchte ich dem User die Möglichkeit geben, 5 Suchkriterien auszuwählen, um Häuser mit bestimmten Eigenschaften (Pool,Keller,Terasse,Garten,Flachdach) zu suchen.

    SELECT DISTINCT h.name FROM haus h,merkmal m,merkmal m1,merkmal m2,djh_jh_merkmal m3,merkmal m4 WHERE m.merkmal='$pool' AND m1.merkmal='$keller' AND m2.merkmal='$terasse' AND m3.merkmal='$garten' AND m4.merkmal='$flachdach' AND h.id=m.id AND h.id=m1.id AND h.id=m2.id AND h.id=m3.id AND h.id=m4.id

    bringt mir allerdings nur ein Ergebnis, wenn der User alle Kriterien auswählt.

    Wie müsste das SELECT aussehen, wenn nur eine beliebige Auswahl getroffen wird?

    Hardy

  • #2
    mache OR statt AND
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Es soll schon eine Abhängigkeit da sein. D.h. wenn die Auswahl Pool und Flachdach gewählt wird sollen auch nur die Häuser erscheinen, die diese Kriterien erfüllen.

      Die OR Abfrage hat meinen Rechner erstmal vollkommen lahmgelegt !!

      Kommentar


      • #4
        gegen das lahmlegen empfehle in indizes.

        und du kannst auch OR und AND mischen und klammern setzen.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Bei 5 Auswahlmöglichkeiten gibt es x Möglichkeiten der Kombination. Ich weiß nicht, wie ich auf diese Vielzahl von Kombinationen reagieren soll.

          Kommentar


          • #6
            mit if eine prüfung vornehmen und entsprechend deine query erstellen.

            noch was. ein richtiger JOIN bringt dir auch einen geschwindigkeitsvorteil. schaue einfach mal bei www.mysql.com vorbei.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Eine If - Abfrage würde bedeuten, dass ich für jede Kombinationsmöglichkeit ein query erstellen müsste.

              Mit JOIN habe ich leider noch keine Erfahrungen gemacht. Ein Geschwindigkeitsvorteil wäre wünschenswert. Eine funktionierende Abfrage ist mir zur Zeit aber wichtiger.

              Kommentar


              • #8
                Re: Tabellenabfrage

                Original geschrieben von webhardy
                ... Wie müsste das SELECT aussehen, wenn nur eine beliebige Auswahl getroffen wird?
                wenn das noch zutrifft, wäre es sinnvoller, eine where-bedingung
                per if zusammen zu setzen:

                PHP-Code:
                $wassuchstdu "where ";

                if(isset(
                $_POST['pool']))   $wassuchstdu .= "m1.merkmal='".$_POST['pool']."' and ";
                .
                .

                am ende $wassuchstdu komplettieren und in die
                query einsetzen.
                Kissolino.com

                Kommentar


                • #9
                  Danke, das war der Tipp, den ich gebraucht habe!!

                  Kommentar


                  • #10
                    Original geschrieben von webhardy
                    Danke, das war der Tipp, den ich gebraucht habe!!
                    ...und auch der, den abraxax dir schon gegeben hatte.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar

                    Lädt...
                    X