Join Verständnis - Problem

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

  • Join Verständnis - Problem

    Folgendes würde ich auch mit mehren DB-Anfragen hinbekommen, aber ich würd's gerne mal mit Join probieren. (Es funktioniert einfach nicht ! )

    Problem:

    Ich möchte eine Arbeitsliste erstellen
    In meiner Datenbank sind 4 Tabellen

    1.Tabelle - Zuordnung obst_id & obst_name

    PHP-Code:
    obst_id obst_name
    -------------------------------------
       
    1    Aubergine
       2    
    Avokado
       3    
    Apfel (Bräburn)
       
    4    Apfel (Golden Delicious)
       
    5    Birne (Williams)
       
    6    Trauben (hell)
       
    7    Trauben kernlos (Sultanas)
    // etc... 
    2. Tabelle - Zuordung mitarbeiter_id & mitarbeiter_name

    PHP-Code:
    mitarbeiter_id mitarbeiter_name
    -----------------------------------
          
    1        Mike Simon (*)
          
    2        Frau Koch
          3        
    Frau Marlen
          4        
    Frau Patrick (*)
          
    5        Frau Schöffel
    // etc. 
    3. Tabelle - Zuordung taetigkeit_id - taetigkeit_name

    PHP-Code:
    taetigkeit_id taetigkeit_name
          1       
    Ware auffüllen und ggfnachbestellen
          2       
    Beratung Verkostung
          3       
    Warenanahme und Kontrolle 
    4. Tabelle - Resumé :

    PHP-Code:
    mitarbeiter_id obst_id taetigkeit_id
    -----------------------------------------
          
    1        |    8    |       1
          2        
    |    8    |       1  
          3        
    |    7    |       2  
          4        
    |    8    |       
    Output sollte sein:

    Name: Mike Simon
    Bereich (Obst): Alles
    Aufgabe: Ware auffüllen und ggf. nachbestellen

    Name: Frau Koch
    Bereich (Obst): Alles
    Aufgabe: Ware auffüllen und ggf. nachbestellen

    Name: Frau Marlen
    Bereich (Obst): Trauben kernlos (Sultanas)
    Aufgabe: Verkostung

    und so weiter...

    KÖNNTE MIR BITTE JMD DIE JOIN ANWEISUNG AN DIESEM BEISPIEL ERKLÄREN ? ICH WÄRE EUCH SUPER DANKBAR !


    // add: ich muss wohl LEFT [OUTER] JOIN verwenden, aber komme damit erst recht nicht klar !
    // add2: oder doch lieber nen EQUI -JOIN ?
    Zuletzt geändert von testuser; 30.08.2003, 23:35.

  • #2
    so sollte es passen...



    1.Tabelle - Zuordnung obst_id & obst_name
    -> obst

    2.Tabelle - Zuordung mitarbeiter_id & mitarbeiter_name
    -> mitarbeiter

    3.Tabelle - Zuordung taetigkeit_id - taetigkeit_name
    -> taetigkeit

    4.Tabelle - Resumé :
    -> resume


    Code:
    SELECT
        M.mitarbeiter_name,
        T.taetigkeit_name,
        O.obst_name
    FROM
        resume R
            LEFT JOIN mitarbeiter M ON (R.mitarbeiter_id = M.mitarbeiter_id)
            LEFT JOIN obst O ON (R.obst_id = O.obst_id)
            LEFT JOIN taetigkeit T ON (R.taetigkeit_id = T.taetigkeit_id)
    EDIT:
    fehler beseitigt.....
    Zuletzt geändert von Abraxax; 30.08.2003, 23:59.
    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
      Na ob ich da durchblick ?

      Ich versuche mich mal dran, aber glaube kaum daran, das mir das etwas bringt.

      aber ich beis(s) mich durch !
      Zuletzt geändert von testuser; 30.08.2003, 23:51.

      Kommentar


      • #4
        ich fasse mal zusammen. hoffentlich wird es klarer.... oder eben auch nicht...

        ich lade mit erst einmal alles aus der 'resume'. nun habe ich also die 3 spalten mit den zahlen. um nun eine verbindung zu den jeweiligen anderen tabellen aufzubauen, nutze ich LEFT JOIN. das ON bedeutet, dass die felder, die dort angegeben sind, als vergleich genommen werden.

        als beispiel: mitarbeiter-id 1 hat einen namen. der name steht in der ma tabelle drin. dort ist auch die 1 als id enthalten. das ist der vergleich. das ganze passiert mit alles drei tabellen und fertig.

        damit du nicht alle unnötigen felder auch bekommst, habe ich im SELECT nicht den * verwendet, sondern die feldnamen direkt angegeben. den tabellen habe ich jeweils einen alias verpasst, damit ich bei den ON-teilen nicht immer den ganzen tabellennamen tippen muss.

        fertig?

        alle klarheiten beseitigt?

        EDIT:
        und editiere nicht immer deinen post, wenn man schon antwortet....
        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
          Danke für die Antwort ! Ich lese gleich mal.
          Ps.: Das nexte Mal editiere ich nix mehr.

          VIELEN DANK !

          EDIT:

          Ich editiere jetzt trotsdem nochmal. Ich habe es nun verstanden ! WOW, Nochmals Danke !

          Zuletzt geändert von testuser; 30.08.2003, 23:59.

          Kommentar


          • #6
            ich habe auch editiert...
            habe in der query noch einen fehler gefunden....

            gut, dass du es verstanden hast.... das ging ja fix...

            EDIT:
            übrigens .... wenn du editierst, bekomme ich keine mail mehr, dass was neues da ist. also kann ich auch was nicht mehr lesen...
            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

            Lädt...
            X