Autor | Zpráva | ||
---|---|---|---|
Kreed Profil * |
#1 · Zasláno: 7. 4. 2013, 00:11:32
Ahoj, potreboval bych poradit s jenou zapeklitou veci
Mam dve tabulky images a ArticleImages, ktere mam spojeny pomoci sloupce i_id. Potrebuji najit a smaza vsechnyt zaznamy v images, ktere se nenachazi v ArticleImages. Zkousel jsem neco jako: SELECT DISTINCT name FROM images,ArticleImages WHERE images.i_id!=ArticleImages.i_id, ale vrati to vsechny zaznamy images, bez parametru distinct to vrati uplny nesmysl Diky |
||
Zechy Profil |
Ve chvíli kdy v Oracle Join chybí nebo je špatně podmínka, navrátí se, nebo spíše provede, Cartesian - každej řádek s každym. Co se týče distinct, ten pouze navrátí výsledek bez duplicitních hodnot.
Použil bych spíše subquery, kdy si tím poddotazem vytáhneš z druhý tabulky všechna data a přes NOT IN najdeš ty, které tam nejsou. SELECT name FROM images WHERE i_id NOT IN (SELECT i_id FROM ArticleImages); |
||
Camo Profil |
#3 · Zasláno: 7. 4. 2013, 08:18:12
Kreed:
alebo cez left join: SELECT i.name FROM images i LEFT JOIN ArticleImages a ON i.i_id = a.i_id WHERE a.i_id IS NULL; |
||
Tori Profil |
Anebo
SELECT i.`name` FROM `images` i WHERE NOT EXISTS ( SELECT * FROM `ArticleImages` ai WHERE ai.`i_id` = i.`i_id` ) |
||
Časová prodleva: 11 let
|
0