SUCHE optimieren

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

  • SUCHE optimieren

    Hallo,

    ich muss hier eine Suche optimieren. Die Datenbank sieht wie folgt aus

    id | user_id | beruf | position | etc....

    Die Sache ist natürlich, dass sich der User mehrere male darin befinden kann
    Also:
    user_id = 2
    beruf = Söldner
    position = Kugelfang

    user_id = 2
    beruf = Moderator
    position = Chef

    Nun starte ich die Suche wo eine bestimmte Person mal "Söldner" und "Chef" war. Mit einem einfachen SELECT ....AND... kommt natürlich nichts raus weil es zwei unterschiedliche Datensätze sind. Ein OR geht da auch nicht weil, es sollen nur die Personen zurückgeliefert werden, die alle Kriterien erfüllen.
    Wenn es jetzt NUR zwei weitere Kriterien wären könnte ich das mit einem INNER JOIN lösen, aber es sind mehr und es können theoretisch auch mehr werden.

    Hat da einer eine Idee für eine elegante Lösung?
    Danke

  • #2
    Re: SUCHE optimieren

    Nach User-ID gruppieren, Beruf mittels WHERE IN(...) eingrenzen - und dann eine bestimmte Anzahl von Datensätzen verlangen (HAVING COUNT()) ...?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      konkretes Beispiel bitte...

      Kommentar


      • #4
        konkretes Beispiel bitte...
        OffTopic:

        LOOOOOL

        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Ja sehr LOL...

          Ich habs jetzt, danke.

          Kommentar


          • #6
            Original geschrieben von carnz
            Ja sehr LOL...
            na wenn du zu unfähig bist eine vernünftige Rückfrage zu stellen...

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              Also das funktioniert wenn 2 Suchkriterien auch 2 Datensätze zurückliefern

              Aber wenn man jetzt nach "Beruf = Söldner" und "Position = Kugelfang" sucht so kommt nur ein Datensatz zurück und COUNT ist 1 und nicht 2.

              Meine Abfrage sieht dann so aus:

              SELECT user_id, COUNT(*) c FROM tabelle
              WHERE position LIKE '%Kugelfang%'
              OR beruf LIKE '%Söldner%'
              GROUP BY user_id
              HAVING c = 2

              -------------

              Original geschrieben von ghostgambler
              na wenn du zu unfähig bist eine vernünftige Rückfrage zu stellen...
              Wenn ihr beide so klug seid, dann hättet ihr mir vielleicht auch sagen können was ich falsch gemacht habe, denn ich finde "konkretes Beispiel bitte" eigentlich eindeutig. Indem ihr hier "rumlolt" ist keinem geholfen...
              Zuletzt geändert von carnz; 14.04.2007, 10:07.

              Kommentar


              • #8
                Original geschrieben von carnz
                Aber wenn man jetzt nach "Beruf = Söldner" und "Position = Kugelfang" sucht so kommt nur ein Datensatz zurück und COUNT ist 1 und nicht 2.
                1. In deiner Query steht Oder, nicht Und.

                2. Das ist ja auch eine ganz anderer Anforderung als zuvor.
                Dann musst du das, was du erreichen willst, wohl erst mal etwas genauer definieren.
                dann hättet ihr mir vielleicht auch sagen können was ich falsch gemacht habe, denn ich finde "konkretes Beispiel bitte" eigentlich eindeutig.
                Ja, wir finden es auch eindeutig - eindeutig Schnorrerei.
                Wenn dir ein Vorschlag gemacht wird, dann darf doch wohl erwartet werden, dass du den erst mal selber umzusetzen versuchst.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Es gibt ja zwei (oder mehr) Felder. Im Beispiel eben "position" und "beruf". Das Suchfomular hat auch diese zwei Felder. Man kann nicht zwei Suchbegriffe für ein Feld angeben.

                  Ich suche also nach einem in der position = Kugelfang UND beruf = Moderator. Die Suche wäre in dem Beispiel über zwei Datensätze verteilt. Aber ich kann ja auch nach position = Kugelfang und beruf = Söldner suchen. Das wäre dann in nur einem Datensatz.

                  Es sollen nur User ausgegeben werden die irgendwann mal alle Kriterien erfüllt haben.

                  Original geschrieben von wahsaga

                  Ja, wir finden es auch eindeutig - eindeutig Schnorrerei.
                  Wenn dir ein Vorschlag gemacht wird, dann darf doch wohl erwartet werden, dass du den erst mal selber umzusetzen versuchst.
                  Ich frage ja nicht, weil ich so viel Ahnung von SQL habe...
                  Zuletzt geändert von carnz; 14.04.2007, 11:55.

                  Kommentar


                  • #10
                    Original geschrieben von carnz
                    Ich frage ja nicht, weil ich so viel Ahnung von SQL habe...
                    im Manual finden sich zu allen Begriffen ausführliche Hilfe-Seiten, sogar auf Deutsch. Wenn dir jemand den Query gleich fertig basteln soll, wirst du wohl deine Kreditkarte zücken müssen *shrug*

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar

                    Lädt...
                    X