Announcement

Collapse
No announcement yet.

Inner Join, wo ist der Fehler

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Inner Join, wo ist der Fehler

    Guten Tag liebe Gemeinde, ich habe folgendes Problem

    Code:
    Select
        count(t_koopbetrieb.Name) as koopZahl,
        count(t_azubi.Name) as azubiZahl
        from t_koopbetrieb
        inner join t_azubi on t_koopbetrieb.Koopbetrieb_ID=t_azubi.Koopbetrieb_ID
        WHERE t_azubi.Zusatnd='Aktuell' and t_koopbetrieb.akquise='1'
        GROUP BY t_koopbetrieb.Name, t_azubi.Name
    dies scheint falsch zu sein, ich bekomme folgenden Fehler

    ->mysql_fetch_object(): supplied argument is not a valid MySQL result resource

    bitte um Hilfe


    MfG Flash

  • #2
    Hallo,

    versuchs mal so:

    Select
    count(t_koopbetrieb.Name) as koopZahl,
    count(t_azubi.Name) as azubiZahl
    from t_koopbetrieb,t_azubi
    where t_koopbetrieb.Koopbetrieb_ID=t_azubi.Koopbetrieb_I D
    and t_azubi.Zusatnd='Aktuell' and t_koopbetrieb.akquise='1'
    GROUP BY t_koopbetrieb.Name, t_azubi.Name

    Gruß
    docendo discimus

    Comment


    • #3
      Hallo,

      das Statement sieht auf den ersten Blick ok aus. Was die richtige Schreibweise der Tabellen und Feldnamen angeht mußt du allerdings selbst überprüfen. z.B.: t_azubi.Zusatnd ?

      Laß dir doch mal mit mysql_error() den genauen Fehlertext von MySQL ausgeben.

      Gruß Falk
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Hallo Falk,

        ich kenne mich in der expliziten JOIN-Schreibweise noch nicht so aus,
        deshalb habe ich das Statement umformuliert. Aber müsste nicht im
        Original-Statement von Fl4$h das "where" durch ein "AND" ersetzt werden,
        da sich die Bedingungen noch auf die gejointe Tabelle t_azubi beziehen
        und nicht auf die Tabelle t_koopbetrieb? Also so:

        count(t_koopbetrieb.Name) as koopZahl,
        count(t_azubi.Name) as azubiZahl
        from t_koopbetrieb
        inner join t_azubi on t_koopbetrieb.Koopbetrieb_ID=t_azubi.Koopbetrieb_I D
        AND t_azubi.Zusatnd='Aktuell' where t_koopbetrieb.akquise='1'
        GROUP BY t_koopbetrieb.Name, t_azubi.Name

        Gruß
        docendo discimus

        Comment


        • #5
          Originally posted by frauwue View Post
          Hallo Falk,

          ich kenne mich in der expliziten JOIN-Schreibweise noch nicht so aus,
          deshalb habe ich das Statement umformuliert. Aber müsste nicht im
          Original-Statement von Fl4$h das "where" durch ein "AND" ersetzt werden,
          da sich die Bedingungen noch auf die gejointe Tabelle t_azubi beziehen
          und nicht auf die Tabelle t_koopbetrieb?
          Hallo frauwue,

          was hier aktuelle "Lehrmeinung" ist kann ich dir nicht sagen. Syntaktisch sind beide Varianten richtig. Ich verwende in der ON-Klausel des Join immer nur die Beziehungen, die den Join auch tatsächlich beschreiben, also z.B. bei einem Schlüssel über mehrere Felder. Die feste Einschränckung auf 'Aktuell' gehört hier nach meiner Meinung in die Where-Klausel.
          Aber wie gesagt, ich laß mich da gerne belehren

          Gruß Falk
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment


          • #6
            Hallo,

            ich hab's jetzt mal ausprobiert (LEARNING BY DOING ).
            Beim INNER JOIN ists egal, wo man die Bedingung hinpacktl. Aber beim OUTER JOIN nicht.

            Gruß
            docendo discimus

            Comment


            • #7
              Danke für die Schnellen Antworten ich werd versuchen da was zu machen, das witzige ist dass der Webserver keinen Fehler ausgibt aber mein localhost schon, hmm

              PS: Ich hab grad nen dummen Fehler gefunden, die Tabelle t_azubi hat keine Koopbetrieb_ID *schäm*


              Also irgendwie mache ich was falsch, ich habe die Abfrage umgestaltet aber es geht trozdem nicht
              Code:

              SELECT
              COUNT(t_koopbetrieb.Name) as koopZahl,
              COUNT(t_azubi.Name) as azubiZahl
              FROM t_azubi, t_koopbetrieb
              WHERE t_azubi.Azubi_ID IN
              (
              SELECT t_mnazubi_koopbetrieb.azubi_ID
              FROM t_mnazubi_koopbetrieb
              INNER JOIN t_koopbetrieb ON t_mnazubi_koopbetrieb.koopbetrieb_ID=t_koopbetrieb .koopbetrieb_ID
              WHERE t_koopbetrieb.akquise='1'
              )
              AND t_koopbetrieb.akquise='1'
              GROUP BY t_koopbetrieb.Name, t_azubi.Name


              vllt kann mir jemand ein Tipp geben.

              Es ist jetzt alles in ordnung und ich habe keine Fehler mehr, aber die Abfrage hier oben gib die falsche Anzahl aus, ich bekomme da jeweils 1 aus den Counts, sollten aber mehr sein, hmmm *am-hinterkopf-kratz*

              Danke im Voraus

              MfG Flash
              Zuletzt editiert von Fl4$h; 19.06.2008, 11:25.

              Comment


              • #8
                OK Leute ich habe alles hinbekommen,

                Danke an alle

                MfG Flash

                Comment

                Working...
                X