mysql prob

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

  • mysql prob

    kriegs einfach nicht hin! folgendes schema einer tabelle mit zwei spalten:

    id auftrags_nr
    5 | 0000002
    1 | 0000002
    6 | 0000002
    5 | 0000022
    1 | 0000022
    6 | 0000022
    6 | 0000001

    ich möchte jetz die auftrags nummern rausfinden die nur bei id 6 vorkommen. also im oberen fall wäre das 0000001 weil die anderen aufträge ja auch zu noch anderen ids gehören! wie geht sowas

    danke

    fra7l7

  • #2
    kurz denken hilft.....
    Code:
    SELECT
        id
        auftr_nr
    FROM
        tabelle
    WHERE
        id = 6
    HAVING
        COUNT(auftr_nr) = 1
    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
      having hab ich noch nie benutzt , ... habs mal probiert aber ich krieg kein ergebnis die query ist ok aber das ergebnis ist leer?
      EDIT:
      hab nochmal mit group by gemacht -> jetzt fkt es -> happy juhu danke



      EDIT:
      HALT! kommando zurück -> geht ja doch nicht! momment mal ich werd noch mal weiter probieren!


      Zuletzt geändert von frank7l7; 25.01.2004, 11:55.

      Kommentar


      • #4
        Original geschrieben von Abraxax
        kurz denken hilft.....
        Code:
        SELECT
            id
            auftr_nr
        FROM
            tabelle
        WHERE
            id = 6
        HAVING
            COUNT(auftr_nr) = 1
        Tja ... hättest Du das mal getan ... !
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          hab das nochmal überdacht und probiert was du vorgeschlagen hast. ich galube du hast das etwas missverstanden. wenn du nochmal so gnädigst wärest auf thread nr 1 zu gucken ->
          nur id 6 bearbeitet allein auftrag 0000001 und genau das will ich rausfinden welcher auftrag wird nur von einem kunden (id) bearbeiten und nicht auch noch von anderen ...

          Kommentar


          • #6
            Original geschrieben von goth
            Tja ... hättest Du das mal getan ... !
            es ist nur ein beispiel in die richtige richtung.
            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
              Original geschrieben von frank7l7
              nur id 6 bearbeitet allein auftrag 0000001 und genau das will ich rausfinden welcher auftrag wird nur von einem kunden (id) bearbeiten und nicht auch noch von anderen ...
              so besser?

              Code:
              SELECT
                  t2.id
                  t2.auftr_nr,
                  COUNT(t2.auftr_nr) anzahl
              FROM
                  tabelle t1
                      INNER JOIN tabelle t2 USING(auftr_nr)
              WHERE
                  t1.id = 6
              GROUP BY
                  t2.id,
                  t1.auftr_nr
              HAVING
                  anzahl = 1
              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


              • #8
                danke für dein mühen aber das haut nicht hin. da muß es eher eine bedingung geben die die anderen ids ausschließt sowas wie

                SELECT auftr_nr WHERE id = 6 AND auftr_nr IS NOT IN OTHER ID

                nicht lachen ist ja nur schematisch! bei deiner idee krieg ich halt auch die aufträge raus die noch ein anderer kunde (id) bearbeitet :/

                Kommentar


                • #9
                  ähm. jetzt weiss ich nicht, was du machst, aber die letze query habe ich getestet.

                  es kommt das hier raus:
                  Code:
                  id | auftr_nr | anzahl
                   6 |  0000001 |   1
                  und das ist ja das, was du haben willst. oder?
                  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


                  • #10
                    nochmal wenn ich das muster hier habe

                    kd_id - auftrags_nr
                    5 | 0000002
                    1 | 0000002
                    6 | 0000002
                    5 | 0000022
                    1 | 0000001
                    6 | 0000022
                    6 | 0000001

                    dann muß das ergebnis null sein das es keine kd_id gibt die einen auftrag alleine bearbeitet. (mit der having count query gibt er mir 0000001 aus was falsch ist) ist die tabelle aber so:

                    kd_id - auftrags_nr
                    5 | 0000002
                    1 | 0000002
                    6 | 0000002
                    5 | 0000022
                    1 | 0000022
                    6 | 0000022
                    6 | 0000001

                    dann bearbeitet kd_id 6 denn auftrag 0000001 alleine

                    man ist das kompliziert

                    Kommentar


                    • #11
                      ich weiss nicht, was du machst, aber mit diesen daten habe ICH das getestet.

                      Code:
                      CREATE TABLE `tabelle` (
                        `id` int(11) NOT NULL default '0',
                        `auftr_nr` varchar(7) NOT NULL default ''
                      ) TYPE=MyISAM;
                      
                      #
                      # Dumping data for table `tabelle`
                      #
                      
                      INSERT INTO `tabelle` VALUES (5, '0000002');
                      INSERT INTO `tabelle` VALUES (1, '0000002');
                      INSERT INTO `tabelle` VALUES (6, '0000002');
                      INSERT INTO `tabelle` VALUES (5, '0000022');
                      INSERT INTO `tabelle` VALUES (1, '0000022');
                      INSERT INTO `tabelle` VALUES (6, '0000022');
                      INSERT INTO `tabelle` VALUES (6, '0000001');
                      kann es sein, dass du die query nicht 1:1 testest?
                      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


                      • #12
                        das hier is zwar nicht schön und geht wohl nur bei MySQLaber teste mal:
                        Code:
                        SELECT
                            ID,auftrags_nr
                        FROM
                            tabelle
                        GROUP BY 
                            auftrags_nr
                        HAVING
                            COUNT(auftrags_nr) = 1;
                        Beantworte nie Threads mit mehr als 15 followups...
                        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                        Kommentar


                        • #13
                          Original geschrieben von MelloPie
                          das hier is zwar nicht schön und geht wohl nur bei MySQLaber teste mal:
                          bis auf das GROUP BY ist es doch (fast) das gleiche, wie ich zu erst gepostet hatte.

                          dann hat er noch das GROUP BY eingefügt und jammert dann doch, dass es nciht das ist, was er will...
                          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


                          • #14
                            so gehts ja -> da krieg ich dann alle aufträge die nur von einem kd_id bearbeitet werden

                            SELECT
                            kd_id,auftrags_nr
                            FROM
                            auftrag_matches
                            GROUP BY
                            auftrags_nr
                            HAVING
                            COUNT(auftrags_nr) = 1";

                            ... aber mit der bedingung WHERE kd_id = 6 ... gehts eben nicht (weil ich will ja wissen welche aufträge nur kd_id 6 bearbeitet )

                            Kommentar


                            • #15
                              ... aber mit der bedingung WHERE kd_id = 6 ... gehts eben nicht (weil ich will ja wissen welche aufträge nur kd_id 6 bearbeitet )
                              schon mal mit
                              Code:
                              ... HAVING
                                  COUNT(auftrags_nr) = 1 AND kd_id = 6
                              probiert?
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X