Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> DELETE z dwóch tabel, MYISAM
bliitz
post 9.02.2009, 23:02:09
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 dry.gif

Ten post edytował bliitz 9.02.2009, 23:07:27


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
john_doe
post 10.02.2009, 00:44:26
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


  1. SELECT * FROM `atrykuly` art, koment kom WHERE art.id = kom.id AND kom.id = 1


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
Go to the top of the page
+Quote Post
bliitz
post 10.02.2009, 09:18:18
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


--------------------
Go to the top of the page
+Quote Post
skowron-line
post 10.02.2009, 09:47:25
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/
Go to the top of the page
+Quote Post
artega
post 10.02.2009, 10:55:33
Post #5





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

Ostrzeżenie: (0%)
-----


Użyj złączenia:
  1. DELETE artykuly.*, komentarze.* FROM artykuly LEFT JOIN komentarze ON (komentarze.id_artykulu = artykuly.id) WHERE artykuly.id = 1


Ten post edytował artega 10.02.2009, 10:56:31
Go to the top of the page
+Quote Post
bliitz
post 10.02.2009, 11:19:02
Post #6





Grupa: Zarejestrowani
Postów: 155
Pomógł: 12
Dołączył: 5.04.2008

Ostrzeżenie: (0%)
-----


Cytat(artega @ 10.02.2009, 10:55:33 ) *
Użyj złączenia:
  1. DELETE artykuly.*, komentarze.* FROM artykuly LEFT JOIN komentarze ON (komentarze.id_artykulu = artykuly.id) WHERE artykuly.id = 1


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


--------------------
Go to the top of the page
+Quote Post
artega
post 10.02.2009, 13:01:55
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.
Go to the top of the page
+Quote Post
bliitz
post 10.02.2009, 14:40:56
Post #8





Grupa: Zarejestrowani
Postów: 155
Pomógł: 12
Dołączył: 5.04.2008

Ostrzeżenie: (0%)
-----


Cytat(artega @ 10.02.2009, 13:01:55 ) *
Upewnij się, że używasz lewego złączenia na komentarzach.


faktycznie wcześniej było samo JOIN z LEFT JOIN działa jak trzeba smile.gif
thx


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:50