nochmal ich mit Problem bei ner mysql-abfrage

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

  • nochmal ich mit Problem bei ner mysql-abfrage

    Hallo zusammen,

    Also ich habe folgende Tabellen

    Tabelle 1, enthält Daten von Personen (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)
    (kann einer 3 Fremdsprachen - dann hat er hier also 3 Datensätze)

    Nun möchte ich eine Abfrage starten, die mir alle Personen zeigt welche Schmidt heißen und folgende 3 Fremdsprachen können (Englisch, Französisch, Russisch) - also die Personen müssen alle 3 Sprachen beherrschen.

    Wenn die Personen nur eine FS der 3 beherrschen müssten würde ich es so machen:

    SELECT * from tabelle1, tabelle2 WHERE tabelle1.user_id = tabelle2.user_id AND (tabelle1.vorname = schmidt) AND (tabelle2.sprache = französisch OR tabelle2.sprache = russisch OR tabelle2.sprache=englisch)

    Naja und statt dem OR einfach ein AND setzen klappt ja auch nicht.

    Wie würdet Ihr das machen?

    Danke

    www.unister.de

    what students want!

  • #2
    Hi,
    also zunächst würde ich mal dein Datenbankmodell "umbauen".
    Zwischen Deinen zwei Tabellen besteht eine M:N Beziehung. Dies bedeutet, daß jeder User mehere Fremdsprachen kann und jede Fremdsprache von mehereren Usern gesprochen werden kann.
    Mach einfach noch eine Tabelle "user_lang" und lege dort folgende Felder an:

    -id -> Key für die Tablle
    -user_id -> Key für den User
    -lang_id -> Key für die Sprache

    In Deiner Sprachtabelle nimmst Du dann das Feld user_id heraus, und trägst in Deiner Sprachtabelle anschließend nur noch die Sprachen ein. Du kannst dann die User und die Sprachen über die Tabelle "user_lang" verknüpfen.

    Anschließend kannst Du mit folgender Abfrage zu Deinem Ergebnis kommen:

    SELECT user.* from user,user_lang,languages
    WHERE user.user_id = user_lang.user_id
    AND
    user_lang.lang_id = languages.id AND
    languages.language in("Englisch","Französisch","Russisch");

    Hoffe ich konnte Dir helfen,

    Gruß Deep
    http://www.x-tremedev.de

    Kommentar


    • #3
      hi,

      dankeschön ersmal an Dich,

      die Abfrage funktioniert, aber ich habe das Problem das trotzdem alle Personen angezeigt werden welche nur eine der 3 Fremdsprachen sprechen ung nicht nur die, die alle drei können

      Wie könnte ich das lösen???

      Gruss

      Thommy
      www.unister.de

      what students want!

      Kommentar

      Lädt...
      X