[SQL/MS Access] Beginners probleem met join

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Matthew
  • Registratie: Mei 2008
  • Laatst online: 17-08 18:39

Matthew

Jeroen is _niet_ de baas

Topicstarter
Mijn titel klopt niet, ipv join moet het subquery zijn.
Ik probeer het volgende te realiseren:

FirstName en LastName van alle klanten die ooit een order hebben geplaatst met een TotalAmt van meer dan 100 weer te geven. Dit moet met een subquery gebeuren. Verder moet LastName aflopend en FirstName oplopend gesorteerd worden.

Mijn subquery vind je helemaal onderaan maar deze werkt niet. Zelfs mijn poging zonder subquery werkt niet.
Wat doe ik dus verkeerd? Ik begrijp wel dat de telefoonnummer voorkomt in INVOICE en CUSTOMER. Maar hoe moet ik dan FirstName en LastName laten weergeven wanneer de telefoonnummer de relatie is tussen de twee tabellen?
Maak ik een simpele denkfout of is het niet mogelijk?
Verder begrijp ik dat het niet de bedoeling is dat ik jullie mijn huiswerk laat maken maar ik denk dat ik subquery's gewoon nog niet goed begrijp en dat jullie hier mogelijk bij zouden kunnen helpen.
Alvast bedankt.
Relaties
Afbeeldingslocatie: http://i35.tinypic.com/2h7lzt3.jpg
INVOICE_ITEM
Afbeeldingslocatie: http://i36.tinypic.com/2qvrxgl.jpg
INVOICE
Afbeeldingslocatie: http://i34.tinypic.com/4fclt.jpg
CUSTOMER
Afbeeldingslocatie: http://i34.tinypic.com/2va0ghx.jpg

code:
1
2
3
SELECT FirstName, LastName
FROM CUSTOMER
WHERE TotalAmt <100;


code:
1
2
3
4
5
6
7
SELECT FirstName, LastName
FROM CUSTOMER
WHERE INVOICE IN
(SELECT TotalAmt
FROM INVOICE
WHERE TotalAmt >100)
ORDER BY LastName ASC, FirstName DESC;

[ Voor 9% gewijzigd door Matthew op 04-10-2009 17:12 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je fout zit grotendeels in de regel:
SQL:
1
WHERE INVOICE IN

Je bent een hele tabel met een veld aan het vergelijken. 8)7 En dat het voorbeeld zonder subquery niet werkt is nogal wiedes, het veld dat je daar op wil vragen staat helemaal niet in de set met data waaruit je wil selecteren. Je gaat toch ook niet naar de slager om een brood te kopen. ;)

Ik denk dat je er goed aan doet er nog even een boek of een tutorial op na te slaan, dit is toch redelijk de basis van alle mogelijke joins en wordt behandeld in zo'n beetje elke handleiding. :)

[ Voor 25% gewijzigd door NMe op 04-10-2009 17:14 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Matthew
  • Registratie: Mei 2008
  • Laatst online: 17-08 18:39

Matthew

Jeroen is _niet_ de baas

Topicstarter
Tsja, ik heb al zoveel mogelijke versies geprobeerd. Ik zie door het bomen het bos niet meer. Dit was volgens mij een van mijn eerste pogingen.

Dus het zou het volgende moeten zijn?

code:
1
2
3
4
5
6
7
SELECT FirstName, LastName
FROM CUSTOMER
WHERE TotalAmt IN
(SELECT TotalAmt
FROM INVOICE
WHERE TotalAmt >100)
ORDER BY LastName ASC, FirstName DESC;


Of doe ik nu echt iets gigantisch mis |:(

[ Voor 47% gewijzigd door Matthew op 04-10-2009 17:17 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

http://sqlcourse2.com/joins.html <-- veel plezier ;) Je probleem staat daar bijna letterlijk omschreven. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Matthew
  • Registratie: Mei 2008
  • Laatst online: 17-08 18:39

Matthew

Jeroen is _niet_ de baas

Topicstarter
Bedankt voor de link. Ik zal het eens doorspitten.

Acties:
  • 0 Henk 'm!

  • _Noldy
  • Registratie: September 2009
  • Laatst online: 06-07 14:33
Ik zie je probleem, lastig. Het is inderdaad beter dit zelf uit te zoeken. Misschien dat ik een handvat voor je heb:
- Zorg dat je eerst bepaald welke soort informatie je nodig hebt. Bijvoorbeeld Alle namen
- Daarna moet je pas echt bezig gaan met het elimineren van rijen. Dus wat wil je niet en hoe herken je die rijen (gemeenschappelijk) dan kan je die elimineren. Ik vind SQL een soort van nerdy Nederlands en zodra je niet meer weet wat je zegt dan moet je beter nadenken over wat je wil zeggen ;).
Pagina: 1