![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 155 Pomógł: 12 Dołączył: 5.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam
są dwie tabele o przykładowej strukturze: artykuly -------- id ( primary key ) id_autora tekst komentarze ----------- id ( primary key ) id_artykulu komentarz Jak usuwając pozycję z tabeli artykuły automatycznie usunąć komentarze do tego artykułu. Wiem, że najprościej ustawić bazy jako InnoDB, ale mnie interesuje jak to zrobić w MyISAM. mam takie zapytanie: Kod 'DELETE `artykuly`.*, `komentarze`.* FROM `artykuly`, `komentarze` WHERE artykuly.id = :id AND artykuly.id = komentarze.id_artykulu OR artykuly.id = :id' jednak powoduje to usunięcie wszystkich danych z tabeli komentarze ![]() Ten post edytował bliitz 9.02.2009, 23:07:27 -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 873 Pomógł: 25 Dołączył: 24.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
taki sobie całkiem ten Twój temacik. Spróbowałem przerabiać zapytanie
ale nie wychodzi. Co mi przyszło do głowy to dwa razy delete zapuszczać i po kłopocie. Jeden na jednej tabeli drugi na drugiej z tymi samymi wartościami w klauzuli WHERE raz na kluczu podstawowym raz na obcym. Pytanie tylko czy to eleganckie rozwiązanie. Ale zawsze to jakiś trop/pomysł pozdrawiam |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 155 Pomógł: 12 Dołączył: 5.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
no właśnie chodzi o to żeby zrobić to w jednym zapytaniu a nie w dwóch, inne zapytanie, które mi przyszło do głowy to
Kod 'DELETE `artykuly`.*, `komentarze`.* FROM `artykuly`, `komentarze` WHERE artykuly.id = :id AND artykuly.id = komentarze.id_artykulu' ale wtedy w przypadku gdy nie ma komentarzy do artykułu to nie zostanie on usunięty -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Npisz sobie Trigera który będzie który po usunięciu z tabeli Artykuly automatycznie usunie komentarze z tabeli o zadanym id artykulu.
-------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 42 Dołączył: 22.07.2007 Skąd: /dev/random Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 155 Pomógł: 12 Dołączył: 5.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Użyj złączenia:
niestety nie działa, tzn. usuwa artykuł i komentarze prawidłowo, jednak w sytuacji gdy do artykułu nie ma żadnego komentarze to artykuł nie jest usuwany -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 42 Dołączył: 22.07.2007 Skąd: /dev/random Ostrzeżenie: (0%) ![]() ![]() |
Cytat niestety nie działa, tzn. usuwa artykuł i komentarze prawidłowo, jednak w sytuacji gdy do artykułu nie ma żadnego komentarze to artykuł nie jest usuwany Upewnij się, że używasz lewego złączenia na komentarzach. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 155 Pomógł: 12 Dołączył: 5.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Upewnij się, że używasz lewego złączenia na komentarzach. faktycznie wcześniej było samo JOIN z LEFT JOIN działa jak trzeba ![]() thx -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 10:50 |