Nochmal Problem mit Unterabfrage und mysql

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

  • Nochmal Problem mit Unterabfrage und mysql

    Hallo an alle,

    hatte ja schonmal sowas ähnliches gefragt - mir ist jetzt aber noch ein Problem bewusst geworden. Also nochmal es ging um folgendes:

    Ich habe zunächst eine

    Tabelle 1, welcher Daten von Personen enhält (also z.B. folgende Felder:user_id, Nachname, Vorname, Geburtsdatum)

    Tablle 2 enhält nun die Fremdsprachenkenntnisse dieser Personen (also z.B. folgende Felder: id, user_id, sprache)

    Nun möchte ich eine Abfrage starten, die mir alle Personen zeigt welche Schmidt heißen und irgendeine Fremdsprache können. (also: die entsprechenden Personen haben mind einen Eintrag in der zweiten Tabelle - können aber auch mehr sein)

    Normalerweise würde ich das so machen:

    SELECT user_id Name, Vorname FROM tabelle1 WHERE EXISTS (SELECT * FROM TABELLE2 WHERE tablle1.user_id=tabelle2.user_d)

    Wenn ich

    SELECT tabelle1.user_id, tabelle1.name, tabelle1.vorname, tabelle2.user_id FROM tabelle1, tabelle2 WHERE tablle1.user_id=tabelle2.user_d

    mache werden bei leuten welche mehrere Fremdsprachen (zb.3)
    auch dementsprechnd viele Datensätze augegeben. Dies soll aber nicht sein - will ja nur sehen wer überhaupt eine kann.


    Wie würdet ihr das machen?


    Dankeschön im vorraus!!!!


    Thommy
    www.unister.de

    what students want!

  • #2
    Achja hab ich ganz vergessen,

    und wie würdet ihr es machen wenn ich noch ne dritte Tabelle hätte, welche Programmierkenntnisse enthält (z.B. user_id, programmiersprache)

    und ich alle Leute angezeigt haben möchte welche mindestens 1 Fremdsprache und 1 Programmiersprache können.

    (in meinem eigentlichen System könnten das noch mehr Tabllen sein)
    www.unister.de

    what students want!

    Kommentar


    • #3
      SELECT tabelle1.user_id, tabelle1.name, tabelle1.vorname, tabelle2.user_id FROM tabelle1, tabelle2 WHERE tabelle1.user_id=tabelle2.user_id AND tabelle2.sprache<>0

      CAT Music Files

      Kommentar


      • #4
        hatte wohl vergessen noch dazuzuschreiben, dass user welche keine Fremdsprache können gar keinen Datensatz in Tabelle2 haben (user welche 3 können haben halt 3 Datensätze). Also die Abfrage muss irgendwie bei alles usern(tabelle1)prüfen, ob diese überhaupt in Tabelle2 vorkommen

        Danke un Gruss

        Thommy
        www.unister.de

        what students want!

        Kommentar


        • #5
          Ich würde das auf ein einziges binäres Feld umstellen. Und es immer noch in die Usertabelle mit reinpacken, ich sehe immer noch keinen Vorteil in ner Extra-Table.

          Das Feld also z.B.:
          PHP-Code:
          Schalterstellung: ----0/1----0/1----0/1
          ____Beschreibung
          : ----eng----fr-----esp 
          --> Feldinhalt 101 sagt uns einwandfrei und unkompliziert, dass derjenige Englisch und Spanisch kann.

          [Editiert von Sky am 03-12-2001 um 17:38]

          CAT Music Files

          Kommentar


          • #6
            ja aber ich hab doch mehrere solche Tabellen. Z.B noch für Nationalität (man kan schließlich mehrere haben), Prgrammierkenntnisse in den und den Prgrammiersprache....

            Wenn ich die Tabellen in eine packen würde, hätte diese hunderte von Feldern
            www.unister.de

            what students want!

            Kommentar


            • #7
              Na nun übertreib mal nicht! *g*
              Außerdem ist das doch egal.

              CAT Music Files

              Kommentar


              • #8
                hmm,

                Sky, das ist absolut unökonomisch , mal angenommen du hast 1.000.000.000 Menschen und jeder spricht nur 3 bis 4 Sprachen von 5000, dann hast du absolut unnötig viele Nullen in der Deiner DB !
                Natürlich ist dies jetzt ein Beispiel mit sehr grossen Datenmengen, aber wer bei kleinen Sachen schon schludert wird bei grossen Sachen nicht minder schludern ! Weisst wielange ich gebracht hab mir Spaghetti Code ab zu gewöhnen ? Grausam lange !

                [Editiert von JoelH am 04-12-2001 um 04:10]

                Kommentar


                • #9
                  Was haltet Ihr davon:

                  meine 2.Variante einfach erweitert um


                  GROUP by tabelle1.user_id


                  und schon wird nur ein DS angezeigt
                  www.unister.de

                  what students want!

                  Kommentar


                  • #10
                    Re: hmm,

                    Original geschrieben von JoelH
                    Sky, das ist absolut unökonomisch , mal angenommen du hast 1.000.000.000 Menschen und jeder spricht nur 3 bis 4 Sprachen von 5000, dann hast du absolut unnötig viele Nullen in der Deiner DB !
                    Natürlich ist dies jetzt ein Beispiel mit sehr grossen Datenmengen, aber wer bei kleinen Sachen schon schludert wird bei grossen Sachen nicht minder schludern ! Weisst wielange ich gebracht hab mir Spaghetti Code ab zu gewöhnen ? Grausam lange !
                    Das ist natürlich ein Argument - Bei DB-Planung berücksichtige ich aber immer die voraussichtliche Maximalgröße des Datenumfangs... Und greife bei kleineren immer gerne auf die Quick'n'Dirty Lösung zurück.

                    Asche über mein Haupt.

                    CAT Music Files

                    Kommentar

                    Lädt...
                    X