Ankündigung

Einklappen
Keine Ankündigung bisher.

abfrage über zwei levels

Einklappen

Neue Werbung 2019

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

  • abfrage über zwei levels

    ich freue mich nun soweit fortgeschritten zu sein, dass ich die erste komplexe anfrage stellen kann. danke soweit. ich beschreibe mein jüngstes problem: in der personentabelle sind personennamen und zu jedem namen eine berufsnummer. in der berufetabelle sind zu jeder beruffsnummer die berufsnamen. ich möchte nun mit einer abfrage diejenigen personen ausfiltern, deren beruf das wort "IT" enthält. dazu muss ich in der tabellenstruktur aber 'um eine ecke' schauen. wie wird das gemacht? SELECT ...
    mobilis in mobili


  • #2
    um eine ecke schauen???
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      naja, ich finde den hinweis in der berufetabelle, will aber die personennamen wissen. vergiss das mit der ecke wenn es dich verwirrt, ich hoffe der rest der frage ist eindeutig. wie der technische ausdruck für mein problem ist, weis ich noch nicht. wie ist der?
      mobilis in mobili

      Kommentar


      • #4
        du kannst Select so machen:

        tabellenname.spaltenname, tabellenname2.spaltenname oder verstehe ich dich falsch??

        und wen ich dich richtig vestehe dann hatten wir das schon hier im Forum
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Select über mehrere tabellen

          wen das nicht dein Problem löst, dann habe ich dich falsch verstanden, sry
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            nein, ich verstehe es leider nicht.
            mobilis in mobili

            Kommentar


            • #7
              Select über mehrere tabellen

              wen das nicht dein Problem löst, dann habe ich dich falsch verstanden, sry
              Wie man Fragen richtig stellt

              Kommentar


              • #8
                ich versuche nochmal zu formulieren: es gibt eine tabelle der personen und eine tabelle der berufe. die berufe sind durchnummeriert und jeder person ist eine berufsnummer zugeordnet.

                Personen:

                PERSON Andreas BERUF 1
                PERSON Christian BERUF 3
                PERSON Anette BERUF 2


                Berufe:

                1 BEZEICHNUNG IT-Client-Service KOSTEN 2000
                2 BEZEICHNUNG Bügelhilfe KOSTEN 900
                3 BEZEICHNUNG Schauspieler KOSTEN 800


                Ich will nun diejenigen Personen listen, deren beruf die zeichenfolge "IT" enthällt.

                das ergebnis des selects müsste der "Andreas" datensatz sein.
                mobilis in mobili

                Kommentar


                • #9
                  Dafür müsstest du beiden Tabellen in der Abfrage miteinander verknüpfen:
                  Code:
                  SELECT
                      p.person
                  FROM
                      personen AS p
                  INNER JOIN
                      berufe AS b
                  ON
                      p.beruf = b.beruf
                  WHERE
                      b.bezeichnung LIKE '%IT%'

                  Kommentar


                  • #10
                    sieht gut aus. was bedeutet es?
                    mobilis in mobili

                    Kommentar


                    • #11
                      Zitat von Dilandau
                      sieht gut aus. was bedeutet es?
                      Schau dir mal diese Seiten an:
                      http://www.little-idiot.de/mysql/mysql-118.html#joins
                      http://dev.mysql.com/doc/refman/5.0/en/join.html

                      Kommentar


                      • #12
                        ich schaue es an und sehe es nicht. mal meinen vater fragen...
                        mobilis in mobili

                        Kommentar


                        • #13
                          ok, mit meinem vater haben wir nun folgende lösung für das problem ermittelt:

                          PHP-Code:
                           SELECT FROM personenberufe WHERE (personen.berufsnr berufe.nr) AND berufe.name LIKE '%IT%' 
                          worin besteht nun der Unterschied zwischen dem hier und der von xabbuh vorgestellten variante? ist es beides das selbe? performance?

                          nochmal xabbuhs idee:
                          PHP-Code:
                          SELECT
                              p
                          .person
                          FROM
                              personen 
                          AS p
                          INNER JOIN
                              berufe 
                          AS b
                          ON
                              p
                          .beruf b.beruf
                          WHERE
                              b
                          .bezeichnung LIKE '%IT%' 
                          mobilis in mobili

                          Kommentar


                          • #14
                            Deine Abfrage macht vom Prinzip her das gleiche, was meine Abfrage erledigt (von einigen unterschiedlichen Spaltenbezeichnungen mal abgesehen). Allerdings wird bei deiner Abfrage zuerst das karthesische Produkt der beiden Tabellen gebildet, was bedeutet, dass alle Datensatz der Tabelle personen mit allen Datensätzen aus der Tabelle berufe verknäpft werden. Erst danach wird überprüft, auf welche dieser Kombinationen überhaupt die Bedingungen zutreffen. Bei einem INNER JOIN läuft es dagegen so ab, dass lediglich die Datensätze miteinander verknüpft werden, auf die die Bedingung auch tatsächlich zutrifft.

                            Kommentar


                            • #15
                              Zitat von Dilandau
                              PHP-Code:
                               SELECT FROM personenberufe WHERE (personen.berufsnr berufe.nr) AND berufe.name LIKE '%IT%' 
                              Ich wäre nie auf die Idee gekommen es so zu machen. Ist das denn nicht von der Performance her total mieß?

                              Kommentar

                              Lädt...
                              X