Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
nochmal ich mit Problem bei ner mysql-abfrage [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
nochmal ich mit Problem bei ner mysql-abfrage


 
Thommy
04-12-2001, 11:13 
 
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

 
deepthougt
04-12-2001, 17:41 
 
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

 
Thommy
04-12-2001, 20:37 
 
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:06 Uhr.