Problem mit einer Mysql Abfrage

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

  • Problem mit einer Mysql Abfrage

    Hi,

    Ich habe eine Tabelle mit zwei Feldern:

    "ObjektNr" und "Angabe"

    gibt es eigentlich eine Möglichkeit mit einer Abfrage alle "ObjektNr" aus der Tabelle zu holen, die einen Satz mit dem Wert X und einen weiteren Satz mit dem Wert Y im Feld "Angabe" haben?

    Also hole alle Objektnummern, die einen Satz mit Angabe 10 haben und einen weiteren Satz mit Angabe 20 haben?

    Vielleicht stehe ich auch gerade nur auf dem Schlauch

    Gruß
    Oneside
    Zuletzt geändert von oneside; 22.11.2007, 12:19.
    Luxus Magazin
    Luxus Shops

  • #2
    WHERE bedingung...
    Wie ist denn das Feld 'Angabe' definiert? Wieviele Werte kann 'Angabe' haben?
    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


    • #3
      Angabe hat jeweils nur einen Wert, eine Zahl (integer).

      Ich brauche alle Objektnummern, die in derTabelle einen Satz mit dem Wert X in Angabe und einen weiteren Satz mit dem Wert Y im Feld Angabe haben.

      Hole mir die Objektnummern, bei denen ein Satz mit Angabe = 10 und ein weiterer Satz mit Angabe = 20 in der Tabelle vorhanden ist.
      Zuletzt geändert von oneside; 22.11.2007, 12:11.
      Luxus Magazin
      Luxus Shops

      Kommentar


      • #4
        Ich brauche alle Objektnummern, die in derTabelle einen Satz mit dem Wert X in Angabe und einen weiteren Satz mit dem Wert Y im Feld Angabe haben.
        Was imho aber diesem
        Angabe hat jeweils nur einen Wert, eine Zahl (integer).
        widerspricht. Oder willst du alle Objekt Nummern die entweder X oder Y in 'Angabe' enthalten? Weil 'und' ist nicht drin, da Angabe ja nur einen Wert hat (gemäss deiner Aussage)
        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
          Code:
          SELECT ObjektNr FROM tabelle WHERE Angabe=10 OR Angabe=20
          SQL sagt besorge mir alle Datensätze wo Angabe=10 ist oder Angabe=20 ist

          ist doch meiner meinung nach das was du willst oder verstehe ich dich da vollkommen falsch?
          Bitte Beachten.
          Foren-Regeln
          Danke

          Kommentar


          • #6
            Lese nochmal nach

            "Ich brauche alle Objektnummern, die in derTabelle einen Satz mit dem Wert X in Angabe und einen weiteren Satz mit dem Wert Y im Feld Angabe haben."

            Einen weiteren Satz, also zwei Sätze pro Objektnummer.
            Nichteinen Satz mit zwei Werten in dem Feld, das geht ja wie du schon sagtest nicht.

            Wenn
            Ein Satz mit z.B. 10 für die Objektnummer 100
            und
            Ein Satz mit z.B. 20 für die Objektnummer 100
            da ist, dann nehm die Objektnummer in die Ergebnismenge der Abfrage.
            Luxus Magazin
            Luxus Shops

            Kommentar


            • #7
              Original geschrieben von Wyveres
              Code:
              SELECT ObjektNr FROM tabelle WHERE Angabe=10 OR Angabe=20
              SQL sagt besorge mir alle Datensätze wo Angabe=10 ist oder Angabe=20 ist

              ist doch meiner meinung nach das was du willst oder verstehe ich dich da vollkommen falsch?
              Genau das brauche ich nicht....

              Ich brauche die Datensätze, bei denen für eine Objektnummer zwei Sätze da sind, einer mit Angabe=10 UND ein weiterer mit der Angabe=20 .
              Luxus Magazin
              Luxus Shops

              Kommentar


              • #8
                Ich brauche die Datensätze, bei denen für eine Objektnummer zwei Sätze da sind, einer mit Angabe=10 UND ein weiterer mit der Angabe=20 .
                Erklär mir bitte mal wie das gehen sollte: Du hast eine Spalte 'Angabe', die nur einen Wert enthalten kann. Wie zum Henker sollen also in dieses Feld zwei Werte reinkommen? Oder hast du uns noch eine weitere Spalte unterschlagen?

                Gruss

                tobi
                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


                • #9
                  Original geschrieben von jahlives
                  Erklär mir bitte mal wie das gehen sollte: Du hast eine Spalte 'Angabe', die nur einen Wert enthalten kann. Wie zum Henker sollen also in dieses Feld zwei Werte reinkommen? Oder hast du uns noch eine weitere Spalte unterschlagen?

                  Gruss

                  tobi
                  Sorry, aber jetzt hab ichs doch 100 mal beschrieben...

                  Du zitierst einen Satz von mir in dem doch klipp und klar drinnesteht was ich brauche. Das Zwei Werte in dem Feld Angabe stehen sollen hab ich doch gar nicht gesagt. Ich suche jede Objektnummern, für die es ZWEI Sätze in der Tabelle gibt,[COLOR=red]nicht[/COLOR] einen Satz mit zwei Werten im Feld Angabe. Die Objektnummer ist kein eindeutiger Schlüssel. Für eine Objektnummer können auch 10 Sätze oder 100 Sätze drinnen sein...

                  Beispiedatensätze:
                  PHP-Code:
                  Objektnummer                   Angabe
                  1                               10
                  2                               10
                  3                               20
                  4                               10
                  4                               20    
                  5                               20
                  6                               10
                  6                               20 

                  Meine Abfrage soll jetzt ein Array zurückliefern, welches die Objektnummern 4 und 6 enthält, da für diese beiden Nummern jeweils ein Satz mit Angabe 10 [b]und[b] einer mit Angabe 20 da ist.


                  Zuletzt geändert von oneside; 22.11.2007, 12:38.
                  Luxus Magazin
                  Luxus Shops

                  Kommentar


                  • #10
                    Dann suchst du:
                    Code:
                    SELECT distinct ObjektNr FROM tabelle WHERE Angabe=10 OR Angabe=20

                    Kommentar


                    • #11
                      Original geschrieben von PHP-Desaster
                      Dann suchst du:
                      Code:
                      SELECT distinct ObjektNr FROM tabelle WHERE Angabe=10 OR Angabe=20
                      Nein, damit kriegt er ja alle.

                      Er sucht
                      PHP-Code:
                      SELECT ObjektNr FROM tabelle AS a1
                      LEFT JOIN tabelle USING
                      (ObjektNr) AS a2
                      WHERE a1
                      .Angabe=10 AND a2.angabe=20 
                      ich glaube

                      Kommentar


                      • #12
                        Ups, haste recht. Hab ich mich doch glatt von dem Geblubber hier verwirren lassen

                        Kommentar


                        • #13
                          Original geschrieben von ministry
                          Nein, damit kriegt er ja alle.

                          Er sucht
                          PHP-Code:
                          SELECT ObjektNr FROM tabelle AS a1
                          LEFT JOIN tabelle USING
                          (ObjektNr) AS a2
                          WHERE a1
                          .Angabe=10 AND a2.angabe=20 
                          Dann bekomme ich aber einen Fehler wenn ich das so nutze:

                          You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS a2 WHERE a1.Angabe=10 AND a2.Angabe=20' at line 1]

                          Abfrage:
                          PHP-Code:
                          SELECT ObjektNr FROM tab AS a1 LEFT JOIN tab USING(ObjektNr) AS a2 WHERE a1.Angabe=10 AND a2.Angabe=20 
                          Luxus Magazin
                          Luxus Shops

                          Kommentar


                          • #14
                            Es muss
                            Code:
                            ... LEFT JOIN tabelle AS a2 USING(ObjektNr)...
                            heißen!

                            Kommentar


                            • #15
                              Ahhh Juhuuuu jetzt gehts!!

                              Vielen Dank an alle und soory für die anfängliche Verwirrung !

                              Habt mir sehr geholfen!
                              Luxus Magazin
                              Luxus Shops

                              Kommentar

                              Lädt...
                              X