[SQL] Subquery probleem

Pagina: 1
Acties:

  • DA_MELKMAN
  • Registratie: September 2000
  • Laatst online: 28-07-2024
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

  • disjfa
  • Registratie: April 2001
  • Laatst online: 12-05 15:11

disjfa

be

als ik jou was zou ik een keer naar left joins kijken en naar de buren gaan in Programming & Webscripting :)

disjfa - disj·fa (meneer)
disjfa.nl


  • DA_MELKMAN
  • Registratie: September 2000
  • Laatst online: 28-07-2024
ja idd, stom zie t nu pas dat ik m verkeerd heb gepost |:(

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

Move W&G -> P&W

  • DA_MELKMAN
  • Registratie: September 2000
  • Laatst online: 28-07-2024
Thx, bosmonster :)
Verder niemand die het antwoord zou weten (zonder joins)?

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Ik snap jou niet. Hoe kunnen bands zonder liedjes nu van een bepaald genre zijn?

Dat is net zoiets als vragen wat de achternaam van mijn schoonmoeder is, terwijl ik geen vriendin heb.

Genres?

Sorry.. foutje.

Query voor bands zonder een genre op te geven? --> Dan zou ik gewoon niet joinen met de genre-tabel. Je zoekt immers alleen bandnamen?

[ Voor 25% gewijzigd door Varienaja op 03-12-2003 12:51 ]

Siditamentis astuentis pactum.


  • DA_MELKMAN
  • Registratie: September 2000
  • Laatst online: 28-07-2024
Als er wordt gezocht naar ALLEEN bands, en het genre dropdown menuutje wordt leeggelaten, moeten alle bands worden weergegeven. Wanneer er wel een genre wordt ingevuld, worden bands die nog geen muziek hebben gemaakt inderdaad weggelaten.

  • majornono
  • Registratie: Juni 2002
  • Laatst online: 04-04 23:16
probeer eens een join:
code:
1
2
3
4
5
6
SELECT DISTINCT bands.naam
FROM bands
LEFT OUTER JOIN muziekitems
    ON bands.id = muziekitems.bandid
WHERE muziekitems.genre = 'rock' OR muziekitems.genre IS NULL 
LIMIT 0 , 30

Problem Exists Between Chair And Keyboard

Pagina: 1