Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
1
2
3
| SELECT * FROM uitkereing U LEFT OUTER JOIN Abonnement A ON U.gms = A.gsm WHERE A,gsm IS NULL |
Oops! Google Chrome could not find www.rijks%20museum.nl
Welke versie van MySQL gebruik je?
nee nu ga je ervan uit dat het gsmnumer bij het abonnement leeg maar dat klopt nietP_de_B schreef op vrijdag 11 augustus 2006 @ 11:09:
SQL:
1 2 3 SELECT * FROM uitkereing U LEFT OUTER JOIN Abonnement A ON U.gms = A.gsm WHERE A,gsm IS NULL
het gsmnummer van de uitkering bestaat niet in de tabel abonnement
Versie:
MySQL - 3.23.58
phpMyAdmin - 2.8.2
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
hmm geen subqueries das klote met de pet op danbigbeng schreef op vrijdag 11 augustus 2006 @ 11:22:
Nee, wat P_de_B beschrijft is een rewrite van een not exists query, zoals beschreven in de manual. Jouw versie van MySQL ondersteunt geen subqueries.
anyway hoe krijg ik dit dan voorelkaar want in mijn ogen klopt de query van P_de_B niet met dat wat ik wil hebben.
btw IS NULL lijkt me niet bepaald hetzelfde als NOt EXISTS ofwel
voorbeeld:
ik heb een uitkering met dit nummer: 0610-002752
en heb toevallig maar 2 abonnementen in het systeem staan met de gsm-nummers:
0681-586161
0616-986196
nu moet ik dus als resultaat deze uitkering krijgen met dit gsmnummer "0610-002752" omdat deze niet voorkomt in de tabel abonnementen...
edit:
het werkte wel alleen had ik domweg de (,) meegekopieerd -> moest een (.) zijn
thnx
[ Voor 9% gewijzigd door Tijgertje84 op 11-08-2006 11:31 ]
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
Stel je hebt de volgende gegevens:
Uitkeringen
GSM, Uitkering
06-12345678, 10
06-11111111, 20
06-22222222, 20
Abonnementen
GSM, Naam
06-12345678, Jantje
06-11111111, Pietje
06-33333333, Klaasje
Mijn query (zonder de WHERE) zegt eigenlijk, Toon alle rijen van de tabel uitkeringen, en toon overeenkomstige gegevens uit de tabel abonnementen. Toon wel rijen uit de tabel uitkeringen als er geen record in abonnementen zit. Als je een inner join zou hebben zouden alleen records die in beide tabellen zitten in de resultset voorkomen.
De query zonder where levert dus op
U.GSM, U.Uitkering, A.GSM, A.Naam
06-12345678, 10 , 06-12345678, Jantje
06-12345678, 20 , 06-12345678, Pietje
06-22222222, 20, NULL, NULL
De NULL waardes in het laatste record komen omdat er voor GSM nr 06-22222222 geen overeenkomstige record in tabel abonnement zit. BIj een OUTER JOIN krijg je dan NULLs terug.
Door nu in de WHERE clausule op te nemen dat A.GSM NULL moet zijn, krijg je alle records uit Uitkeringen terug, die geen bijbehorend record in Abonnementen hebben.
Oops! Google Chrome could not find www.rijks%20museum.nl
misschien komt het omdat ik niet zo into the JOINS ben
weet veel van SQL maar die JOINS blijven voor mij vaak nog beetje lastig zeker die INNER en OUTER LEFT en RIGHT joins
maar bedankt voor de duidelijke uitleg
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
Oops! Google Chrome could not find www.rijks%20museum.nl
1
2
| SELECT * FROM uitkereing u WHERE u.gms NOT IN (SELECT a,gsm FROM abonnement a) |
[ Voor 3% gewijzigd door XWB op 11-08-2006 12:00 ]
nee zie deze post:Hacku schreef op vrijdag 11 augustus 2006 @ 12:00:
Geen idee of dit werkt:
SQL:
1 2 SELECT * FROM uitkereing u WHERE u.gms NOT IN (SELECT a,gsm FROM abonnement a)
dus helaas geen subqueries voor mijbigbeng schreef op vrijdag 11 augustus 2006 @ 11:22:
Jouw versie van MySQL ondersteunt geen subqueries.
natuurlijk zal het wel werken maar als subqueries zouden werken dan was mijn query ook al goed geweest
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H