MySql Subquery Ersatz
alexsb 10.06.2003 - 16:50 1132 4
alexsb
hmm
|
Hi,
Für das folgende Problem ist die Plattform Apache/php/MySQL
Ich habe 2 Tabellen, die eine ist eine Kreuztabelle zwischen User und Filmen, die andere ist eine Tabelle die Filme enthält. Ich möchte alle Filme die ein gewisser User nicht hat anzeigen. Das (meiner Meinung nach) korrekte SQL Statement wäre:
SELECT * FROM tb_movie where mid = (Select r_mid from tb_user_x_movie where r_uid <> '$uid')
Da MySQL aber keine Subquerys unterstützt hab ich ein Problem. Ich versuche das zu umgehen indem ich eine Funktion schreibe die mir die Werte der Subquery zurückgibt, aber ich weiss nicht ob ich in PHP Arrays returniern kann. Ich könnte es natürlich ohne zusätzliche Funktion machen, aber das ist nicht besonders elegant. Ich bitte um Hilfe.
|
atrox
in fairy dust... I trust!
|
a) da du eine submenge zurückgibst, müsstests du "EXISTS" bzw "NOT EXIST"S verwenden oder ein "IN" bzw "NOT IN".
b) die frage ist, möchtest du alle zur auswahl die andere user im moment besitzen, man selbst aber nicht, oder möchtest du wirklich alle, die man selber im moment nicht besitzt ?
c) ich gluaube, du kannst das mit einem join so oder so ähnlich auflösen
select distinct m.* from tb_movie m, tb_user_x_movie uxm where m.mid = uxm.r_mid and not uxm.r_uid ='$uid';
|
flaimo
ILFTKYS
|
sollte doch auch mit einem left join funktionieren....
|
alexsb
hmm
|
Danke mal, sollte das nicht gehen:
SELECT * FROM tb_movie LEFT JOIN tb_user_X_movie on tb_movie.mid = tb_user_X_movie.r_mid AND tb_user_X_movie.r_uid <> 1
ich krieg da die erste tabelle mit den werten voll gekreuzt mit der zweiten Tabelle mit nur NULL werten
edit:
Die Folgende Query bringt mir genau das Gegenteil:
"SELECT * FROM tb_movie INNER JOIN tb_user_X_movie on tb_movie.mid = tb_user_X_movie.r_mid AND tb_user_X_movie.r_uid = '$uid'"
gibt mir alle anziegen die ein User hat
Bearbeitet von alexsb am 13.06.2003, 16:43
|
alexsb
hmm
|
SELECT * FROM tb_movie INNER JOIN tb_user_X_movie on tb_movie.mid = tb_user_X_movie.r_mid AND tb_user_X_movie.r_uid <> '$uid'
ich bin jetzt draufgekommen das das eigntlich funktioniert, es zeigt mir alle die man selbst nicht besitzt aber die wer anders besitzt. Ich habe das sowieso so gelöst das jeden eingefügten Film jemand besitzen muss, also ist das Problem gelöst, danke
Bearbeitet von alexsb am 13.06.2003, 19:35
|