webForumDet fria alternativet
Logga in / Bli medlem

Problem med NOT EXISTS

Databaser & SQL

2 svar · 220 visningar · startad av Del Pero

Medlem sedan feb. 20003 785 inlägg
Trådstart#1

Såhär ser min tabellstruktur ut (MySQL 4.0.18-standard):

album
--
id  |  namn

content
--
id  | album_id  |  bild_id

När man redigerar informationen om en bild vill jag kunna presentera en dropdown som innehåller alla album där den specifika bilden inte finns representerad.

Jag försöker hämta resultatet med den här SQL-koden, men får det inte att fungera.

$sql = "SELECT a.albumID, a.albumName FROM t_album AS a WHERE NOT EXISTS ( SELECT * FROM t_album_content AS c WHERE a.albumID = c.conAlbum AND c.conImage = ".addslashes($_GET['i_id']).")";

Felmeddelandet skrev:

Notice: Query failed: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXISTS ( SELECT * FROM t_album_content AS c WHERE a.albumID = c SQL: SELECT a.albumID, a.albumName FROM t_album AS a WHERE NOT EXISTS ( SELECT * FROM t_album_content AS c WHERE a.albumID = c.conAlbum AND c.conImage = 7)

Jag har letat runt lite i dokumentationen men det har inte gjort mig mycket klokare...
Hur löser jag detta? :)

Medlem sedan juni 200032 967 inlägg
#2

Om jag inte missminner mig måste du använda MySQL 4.1 eller senare för att kunna köra subqueries på det sätt du vill. Du får nog göra det med en join istället:

$sql = "SELECT a.albumID, a.albumName FROM t_album AS a LEFT JOIN t_album_content AS c on a.albumID = c.conAlbum AND c.conImage = ".addslashes($_GET['i_id'])." WHERE c.conAlbum IS NULL";

Lite krångel har jag med WHERE och AND i joiner, men det är någonstans att starta i alla fall, även om det inte är helt perfekt.

Mvh

Medlem sedan feb. 20003 785 inlägg
#3

Världsklass på inlägget ovan!

257 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)