Hey SQL bikkels!
Voor een project op school moet ik een online muziekdienst maken. Er moet onder andere gezocht kunnen worden op bands die muziek hebben gemaakt van een bepaald genre. Wanneer er geen genre wordt opgegeven, moeten dus alle bands worden weergegeven. Echter, als een band nog geen muziek heeft gemaakt, wordt deze niet weergegeven.
Een greep uit de tabellen is:
bands:
id (primair)
naam
muziekitems:
id (primair)
titel
bandid (welke band 'm heeft gemaakt)
genre
De query ziet er nu als volgt uit:
SELECT DISTINCT bands.naam FROM bands, muziekitems
WHERE bands.id = muziekitems.bandid AND genre = 'rock' LIMIT 0 , 30
Nu zou ik via een AND de bands DIE NOG NOOIT WAT HEBBEN GEMAAKT erbij kunnen doen, via deze query:
Eerste Query: SELECT DISTINCT bandid from muziekitems
- geeft een lijst van alle bandid's die ooit muziek hebben gemaakt (bijvoorbeeld bandid 1, 3 en 5)
Tweede Query: SELECT id FROM bands WHERE id NOT IN (1,3,5)
- geeft een lijst van alle bands die nog geen muziek hebben gemaakt (in dit geval bandid 2 en 4)
Gecombineerde Query: SELECT bands.naam from bands where bands.id not in (SELECT DISTINCT bandid from muziekitems)
Mijns inziens zou dit gewoon moeten werken, maar het werkt dus niet
De foutmelding die ik krijg is: #1064 - You have an error in your SQL syntax en dan de gehele subquery erachteraan
Iemand enig idee hoe dit mogelijk is? Ligt het misschien aan de MySQL versie? (MySQL 4.0.16-max-debug )
Bij voorbaat dank!
Mvg, Frank
Voor een project op school moet ik een online muziekdienst maken. Er moet onder andere gezocht kunnen worden op bands die muziek hebben gemaakt van een bepaald genre. Wanneer er geen genre wordt opgegeven, moeten dus alle bands worden weergegeven. Echter, als een band nog geen muziek heeft gemaakt, wordt deze niet weergegeven.
Een greep uit de tabellen is:
bands:
id (primair)
naam
muziekitems:
id (primair)
titel
bandid (welke band 'm heeft gemaakt)
genre
De query ziet er nu als volgt uit:
SELECT DISTINCT bands.naam FROM bands, muziekitems
WHERE bands.id = muziekitems.bandid AND genre = 'rock' LIMIT 0 , 30
Nu zou ik via een AND de bands DIE NOG NOOIT WAT HEBBEN GEMAAKT erbij kunnen doen, via deze query:
Eerste Query: SELECT DISTINCT bandid from muziekitems
- geeft een lijst van alle bandid's die ooit muziek hebben gemaakt (bijvoorbeeld bandid 1, 3 en 5)
Tweede Query: SELECT id FROM bands WHERE id NOT IN (1,3,5)
- geeft een lijst van alle bands die nog geen muziek hebben gemaakt (in dit geval bandid 2 en 4)
Gecombineerde Query: SELECT bands.naam from bands where bands.id not in (SELECT DISTINCT bandid from muziekitems)
Mijns inziens zou dit gewoon moeten werken, maar het werkt dus niet
De foutmelding die ik krijg is: #1064 - You have an error in your SQL syntax en dan de gehele subquery erachteraan
Iemand enig idee hoe dit mogelijk is? Ligt het misschien aan de MySQL versie? (MySQL 4.0.16-max-debug )
Bij voorbaat dank!
Mvg, Frank