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?
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.