Avatar billede dgivoni Nybegynder
22. maj 2001 - 21:39 Der er 8 kommentarer og
1 løsning

DELETE fra nested join?

Hvad er der galt med syntaksen i flg. sql-sætning:
$sql = \"delete from siddepladser where forestilling in (forestilling inner join siddepladser where forestilling.id = siddepladser.forestilling and forestilling.filmid = \'$film\')\";

Jeg får flg. fejl:
1064: You have an error in your SQL syntax near \'inner join siddepladser where forestilling.id = siddepladser.forestilling and fo\'
Avatar billede alvion Nybegynder
22. maj 2001 - 21:44 #1
Der er mange ting galt:

1) Det ser for mig ud til at du prøver at lave en where sætning hvor du tester på en tabel - kun felter I tabeller kan testes

2) Du laver en \"sub-select\" uden at bruge nøgleordene SELECT .. FROM

3) MySql understøtter ikke sub-selects endnu.
Avatar billede alvion Nybegynder
22. maj 2001 - 21:45 #2
Du bliver nødt til først at finde alle forestillinger, hvor filmid passer med $film, derefter slette alle siddepladser, som matcher de fundne forestillinger.

Altså 2 queries
Avatar billede gizmo-gizmo Nybegynder
22. maj 2001 - 21:49 #3
der står da noget om subselect i manualen til mysql
Avatar billede dgivoni Nybegynder
22. maj 2001 - 21:56 #4
Jeg tror fejlen ligger i navngivningen. Where forestilling skal nok være where siddepladser.foretilling, eftersom det er en attribut der. Jeg tester lige.
Men, altså i forhold til standard sql burde ovenstående i princippet være muligt. Man behøver ikke select i den sub-select-join jeg laver.
Avatar billede dgivoni Nybegynder
22. maj 2001 - 21:57 #5
Nå, det virkede ikke. Så er to queries altså den eneste løsning. Jeg synes sgu der er lidt mangler ved Mysql endnu...
Avatar billede alvion Nybegynder
23. maj 2001 - 09:47 #6
gizmo-gizmo >> Ja der står noget om sub-selects i MySql manualen - under sektionen \"Functionality Missing from MySQL\" :-) Det kommer med al sandsynlighed med i version 4.1

dgivoni >> Lad mig se din tabelstruktur - så skal jeg vise dig en hurtig måde at slette det på.
Avatar billede dgivoni Nybegynder
23. maj 2001 - 10:07 #7
tabelstrukturen ser sådan ud:
Film
- id
- titel
- billede

Forestilling
- id
- filmid
- dato
- tid

Siddeplads
- id
- forestilling
- raekke
- nummer
- status

Jeg har lavet sletningen på flg. måde nu:
$sql = \"select id from forestilling where filmid = \'$film\'\";
$result = exe_sql($sql);
   
while ($row = mysql_fetch_array($result)) {
$sql = \"delete from siddeplads where siddeplads.forestilling = \'\".$row[\'id\'].\"\'\";
exe_sql($sql);
}

exe_sql() er min egen sql-funktion med fejlhåndtering.
Avatar billede alvion Nybegynder
23. maj 2001 - 10:39 #8
Jamen den kan jo ikke blive bedre :-)
Avatar billede dgivoni Nybegynder
23. maj 2001 - 10:46 #9
:-) det er jeg glad for at høre.
Tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester