[MySQL] Rows deleten uit meerdere tabellen

Pagina: 1
Acties:

  • appelsientje
  • Registratie: Juli 2001
  • Laatst online: 17-04 07:07

appelsientje

Het beste onder de zon

Topicstarter
Hallo ik heb een probleem en ik kom er maar niet uit.. misschien dat ik iets kleins over het hoofd zie maar ik kan het maar niet vinden waar het fout gaat.

Ik heb 2 tabellen

Dialoog en een koppeltabel KT_DiaOnd
Nu zitten als voorbeeld de volgende waardes in de tabellen
Dialoog:
PKDialoog
1
2
3


en het koppeltabel heeft
FKDialoogFKOnderwerp
16
26
36



Oke ik weet dus alleen de key van FKOnderwerp en met de key moet ik dus de waarde uit dialoog verwijderen ( 1 , 2 , 3 en natuurlijk de waarde uit de koppeltabel)
Maar het lukt me maar niet

ik heb deze query gemaakt.. maar dat werkt niet
DELETE FROM KT_DiaOnd, Dialoog WHERE KT_DiaOnd.FKDialoog = Dialoog.PKDialoog AND KT_DiaOnd.FKOnderwerp = 6

Iemand misschien een idee???

LR | 4WD | Deep blue | 19" velgen | Trekhaak


Verwijderd

Welke versie van MySQL heb je? Joined deletes kunnen namelijk niet binnen mysql 3 voor zover ik weet, wel vanaf versie 4. Je zal dus gewoon meerdere delete query's bouwen.

- bepalen welke dialogen er bij het onderwerp horen (select).
- dialogen verwijderen
- koppelrecords verwijderen
- onderwerp verwijderen

  • appelsientje
  • Registratie: Juli 2001
  • Laatst online: 17-04 07:07

appelsientje

Het beste onder de zon

Topicstarter
Verwijderd schreef op dinsdag 02 augustus 2005 @ 15:30:
Welke versie van MySQL heb je? Joined deletes kunnen namelijk niet binnen mysql 3 voor zover ik weet, wel vanaf versie 4. Je zal dus gewoon meerdere delete query's bouwen.

- bepalen welke dialogen er bij het onderwerp horen (select).
- dialogen verwijderen
- koppelrecords verwijderen
- onderwerp verwijderen
In ieder geval vanaf 4...

LR | 4WD | Deep blue | 19" velgen | Trekhaak


  • appelsientje
  • Registratie: Juli 2001
  • Laatst online: 17-04 07:07

appelsientje

Het beste onder de zon

Topicstarter
oke laat maar

(ik zit op mijn stage bedrijf) en mij werd verteld dat we echt 4 nog wat gebruikte..
Blijkt dat ik op een server werk met "MySQL 3.23.47-log" .....

Ben ik daarvoor de hele dag bezig met iets dat toch niet gaat worden.... :/ :/

LR | 4WD | Deep blue | 19" velgen | Trekhaak


Verwijderd

Als je dit bekijkt zou iets als onderstaande moeten werken...

code:
1
2
3
4
5
6
7
8
9
10
DELETE FROM
    KT_DiaOnd,
    Dialoog
USING
    KT_DiaOnd,
    Dialoog
WHERE
    KT_DiaOnd.FKOnderwerp = $onderwerpid
AND
    KT_DiaOnd.FKDialoog = Dialoog.PKDialoog;


[edit]
Okay :) Dat wordt dan mn eerste suggestie!

[ Voor 9% gewijzigd door Verwijderd op 02-08-2005 15:39 ]


  • appelsientje
  • Registratie: Juli 2001
  • Laatst online: 17-04 07:07

appelsientje

Het beste onder de zon

Topicstarter
Verwijderd schreef op dinsdag 02 augustus 2005 @ 15:39:
Als je dit bekijkt zou iets als onderstaande moeten werken...

code:
1
2
3
4
5
6
7
8
9
10
DELETE FROM
    KT_DiaOnd,
    Dialoog
USING
    KT_DiaOnd,
    Dialoog
WHERE
    KT_DiaOnd.FKOnderwerp = $onderwerpid
AND
    KT_DiaOnd.FKDialoog = Dialoog.PKDialoog;


[edit]
Okay :) Dat wordt dan mn eerste suggestie!
Yup ;) maar toch bedankt voor je hulp...

LR | 4WD | Deep blue | 19" velgen | Trekhaak


  • MaNdM
  • Registratie: April 2001
  • Laatst online: 23:06

MaNdM

1000-dingen-doekje

Waarom maak je geen gebruik van InnoDB met foreign keys? Dan zorg je dat er een cascade plaatsvind bij een delete uit de parent. Scheelt je query's. Heb ik ook gemaakt voor een structuur waar het 24 tabellen betrof en het werkt perfect. Je zal dan wel een ander tabeltype moeten gebruiken waarbij dan helaas weer als beperking geldt dat een fulltext index voor zoekfuncties niet meer mogelijk is. Als dat geen punt is dan kan je rustig met InnoDB gaan werken want dan hoef je enkel en alleen nog maar deze query uit te voeren:

code:
1
DELETE FROM Dialoog WHERE PKDialoog = '2';


Meer informatie op MySQL.com

To be determined...


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-05 18:42

curry684

left part of the evil twins

MaNdM schreef op woensdag 03 augustus 2005 @ 10:06:
Heb ik ook gemaakt voor een structuur waar het 24 tabellen betrof en het werkt perfect.
Jij staat een cascading delete toe over 24 tabellen? :X

Nog afgezien van dat ik cascading deletes sowieso al ranzig vind is het over zoveel tabellen wel helemaal een uitnodiging tot fatale blunders.

edit:
en ik hoop trouwens dat het een typfoutje is dat je een varchar als primary key gebruikt

[ Voor 12% gewijzigd door curry684 op 03-08-2005 10:39 ]

Professionele website nodig?


  • MaNdM
  • Registratie: April 2001
  • Laatst online: 23:06

MaNdM

1000-dingen-doekje

curry684 schreef op woensdag 03 augustus 2005 @ 10:38:
[...]

Jij staat een cascading delete toe over 24 tabellen? :X

Nog afgezien van dat ik cascading deletes sowieso al ranzig vind is het over zoveel tabellen wel helemaal een uitnodiging tot fatale blunders.

edit:
en ik hoop trouwens dat het een typfoutje is dat je een varchar als primary key gebruikt
De PK die ik daar gebruik baseerde ik even op de TS, persoonlijk heb ik mijn PK's altijd als int. Waarom zou een cascadeing delete over 24 tabellen niet mogen? In dit geval is het heel eenvoudig, er is een parent tabel tblwoning en daar hangen een aantal tabellen aan met de specificaties van die woning. Als de woning gedelete wordt dan hoeven de specs niet meer te bestaan en dus een cascading delete. En ja een huis moet gewist kunnen worden. Ik zie het probleem niet. Zou je misschien toe willen lichten waarom je zo tegen een Foreign Key constraint bent?

To be determined...

Pagina: 1