![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 11.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam trzy tabele: produkt - [id_produkt].[nazwa_produktu] kategoria - [id_kategoria].[nazwa_kategorii] produkt_has_kategoria - [id_produkt_has_kategoria].[produkt_id_produkt] w realcji n:m (każdy produkt może należeć do wielu kategorii) Usuwając kategorię produktów chcę usunąć produkty, które należały tylko do tej kategorii tak, aby w tabeli "produkt" nie pozostały rekordy osierocone. Chciałbym zrobić to w jednym zapytaniu korzystając z podzapytań. To zapytanie: DELETE FROM produkt WHERE id_produkt IN ( SELECT DISTINCT produkt_id_produkt FROM produkt_has_kategoria WHERE kategoria_id_kategoria = id_kategoria ) AND id_produkt NOT IN ( SELECT produkt_id_produkt, count( * ) AS ile FROM produkt_has_kategoria GROUP BY produkt_id_produkt HAVING ile >=2 ) generuje błąd: #1241 - Operand should contain 1 column(s) Proszę o pomoc w poprawnym sformułowaniu tego zapytania. Korzystam z MySQL 4.1.9 pozdrawiam Ten post edytował BC_Rich 11.05.2005, 19:47:03 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 22.04.2004 Skąd: Żoliborz Ostrzeżenie: (0%) ![]() ![]() |
Pzdr. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 11.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Tak, to działa!
Wielkie dzięki pozdrawiam ps. wiem, skąd brał się błąd: moje podzapytanie Kod SELECT produkt_id_produkt, count( * ) AS ile FROM produkt_has_kategoria GROUP BY produkt_id_produkt HAVING ile >=2 zwracało dwie kolumny: ile | produkt_id_produkt tutaj mogła wystąpić tylko jedna, stąd błąd: #1241 - Operand should contain 1 column(s) (to tak chciałem się pochwalić, że wiem, co zrobiłem źle (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ) Dzięki jeszcze raz!!! Ten post edytował BC_Rich 12.05.2005, 01:51:14 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.08.2025 - 05:53 |