[SQL]Selectie op 2 verschillende waardes in 2 velden

Pagina: 1
Acties:
  • 152 views sinds 30-01-2008
  • Reageer

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 16:23
Hallo allemaal,

Ik ben aan het worstelen met een SQL probleempje. Ik heb de volgende tabel:

code:
1
2
3
4
5
6
7
8
9
10
[ID]    [FK1]     [FK2]    [WAARDE]
1       1            1          Ja
2       1            2          Ja
3       1            3          Nee
4       2            1          Nee
5       2            2          Nee
6       2            3          Ja
7       3            1          Ja
8       3            2          Ja
9       3            3          Ja


Nu wil ik graag de velden selecteren waarbij FK2=1 & Waarde=Ja EN FK2=2 & Waarde=Ja. Alleen kan ik niet echt eruit komen hoe ik dit nu precies moet doen. Dit is wat ik nu heb:

code:
1
2
3
SELECT TABELNAAM.*
FROM TABELNAAM
WHERE (((TABELNAAM.FK2) In (1,2)) AND ((TABELNAAM.WAARDE)="Ja"));


Maar dit geeft teveel records terug. Maar ik kan er niet echt uitkomen hoe ik dit het beste kan doen. Wie kan me hier bij helpen?

Hail to the king baby!


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 14:32

Creepy

Tactical Espionage Splatterer

Welke records geeft dit nu precies terug? Want als ik zo je omschrijving lees en dat vergelijk met je query dan zou dat moeten kloppen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
FK2=1 én FK2=2 is onmogelijk ;)

Verder met Creepy hierboven; je query klopt zover ik kan zien.

Misschien is je "Ja" en "Nee" een boolean veld? Dan kun je geen "Ja" (String) gebruiken in je where clause natuurlijk ;)
diedazz schreef op vrijdag 26 januari 2007 @ 10:18:
Je moet nog "unieke waarden" toepassen als ik mij niet vergis uit mijn access kennis..(ja i know dit is mysql). Hoe je dat doet weet ik niet meer precies maar dat zou je wel moeten kunnen vinden ergens..
Hier zijn (voor zover TS erover vertelt) geen "unieke waarden" (Primary keys bedoel je neem ik aan) nodig en waar lees jij MySQL? ;)

[ Voor 139% gewijzigd door RobIII op 26-01-2007 10:19 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • diedazz
  • Registratie: Juli 2003
  • Niet online
Je moet nog "unieke waarden" toepassen als ik mij niet vergis uit mijn access kennis..(ja i know dit is mysql). Hoe je dat doet weet ik niet meer precies maar dat zou je wel moeten kunnen vinden ergens..

Get Airflow, save the world.


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 26-11 17:32

Gé Brander

MS SQL Server

code:
1
2
3
4
5
6
SELECT * 
FROM TABELNAAM
WHERE FK2 = 1
AND WAARDE = 'JA'
OR FK2 = 2
AND WAARDE = 'JA'

Deze code zou moeten werken, alhoewel ik niet weet of MySQL wat dit betreft exact hetzelfde werkt als SQL Server 2000/2005

[ Voor 39% gewijzigd door Gé Brander op 26-01-2007 10:20 ]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • MissingDog
  • Registratie: Augustus 2002
  • Niet online
Ik doe maar een gokje hoor....

SELECT * FROM TABELNAAM WHERE FK2 < 3 AND waarde = "Ja"?

[ Voor 3% gewijzigd door MissingDog op 26-01-2007 10:19 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
c70070540 schreef op vrijdag 26 januari 2007 @ 10:19:
code:
1
2
3
4
5
6
SELECT * 
FROM TABELNAAM
WHERE FK2 = 1
AND WAARDE = 'JA'
OR FK2 = 2
AND WAARDE = 'JA'

Deze code zou moeten werken, alhoewel ik niet weet of MySQL wat dit betreft exact hetzelfde werkt als SQL Server 2000/2005
Wat is het verschil met jouw query en die van TS? En ook voor jou: waar lees jij MySQL?
MissingDog schreef op vrijdag 26 januari 2007 @ 10:19:
Ik doe maar een gokje hoor....

SELECT * FROM TABELNAAM WHERE FK2 < 3 AND waarde = "Ja"?
Dat zou ik niet doen; dat geeft namelijk ook records terug waar FK2 = -2786 ;)

[ Voor 25% gewijzigd door RobIII op 26-01-2007 10:21 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 26-11 17:32

Gé Brander

MS SQL Server

diedazz schreef op vrijdag 26 januari 2007 @ 10:18:
Je moet nog "unieke waarden" toepassen als ik mij niet vergis uit mijn access kennis..(ja i know dit is mysql). Hoe je dat doet weet ik niet meer precies maar dat zou je wel moeten kunnen vinden ergens..
Zie nu dat hij niet de TS is, dus dat was even een misschien verkeerde aanname...

[ Voor 11% gewijzigd door Gé Brander op 26-01-2007 10:22 ]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 14:32

Creepy

Tactical Espionage Splatterer

Dan zou je je eens moeten afvragen waar diedazz dat vandaan haalt want urk_forverever heeft er niks over gemeld ;)
Edit: ah, dat dat zie je dus ook :)

[ Voor 13% gewijzigd door Creepy op 26-01-2007 10:23 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • MissingDog
  • Registratie: Augustus 2002
  • Niet online
RobIII schreef op vrijdag 26 januari 2007 @ 10:20:
[...]

Wat is het verschil met jouw query en die van TS? En ook voor jou: waar lees jij MySQL?

[...]

Dat zou ik niet doen; dat geeft namelijk ook records terug waar FK2 = -2786 ;)
In de voorbeeldtabel staan geen waarden < 1, vandaar dat ik hier geen rekening mee gehouden heb :-)

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 26-11 17:32

Gé Brander

MS SQL Server

RobIII schreef op vrijdag 26 januari 2007 @ 10:20:
[...]

Wat is het verschil met jouw query en die van TS? En ook voor jou: waar lees jij MySQL?
Ik heb de schrijfwijze die de TS doet gezien, en die ziet er totaal anders uit dan wat ik schreef. Maar het kan zo zijn dat bepaalde verschillend geschreven code hetzelfde resultaat opleverd. Ik weet alleen uit ervaring dat mijn oplossing zou moeten werken. Echter als je het anders wilt opschrijven, be my guest!

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 25-11 22:57

dusty

Celebrate Life!

De vraag blijft staan, welke records verwacht hij terug en welke records krijgt hij op het moment terug?

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 26-11 17:32

Gé Brander

MS SQL Server

dusty schreef op vrijdag 26 januari 2007 @ 10:25:
De vraag blijft staan, welke records verwacht hij terug en welke records krijgt hij op het moment terug?
Nu wil ik graag de velden selecteren waarbij FK2=1 & Waarde=Ja EN FK2=2 & Waarde=Ja. Alleen kan ik niet echt eruit komen hoe ik dit nu precies moet doen. Dit is wat ik nu heb:
Lijkt mij duidelijk... Records waar het volgende voor geldt.

1) FK2 moet 1 zijn en WAARDE moet Ja zijn
2) FK2 moet 2 zijn en WAARDE moet Ja zijn

Of zie ik iets over het hoofd?

[ Voor 3% gewijzigd door Gé Brander op 26-01-2007 10:30 ]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 25-11 22:57

dusty

Celebrate Life!

c70070540 schreef op vrijdag 26 januari 2007 @ 10:25:
[...]
Ik heb de schrijfwijze die de TS doet gezien, en die ziet er totaal anders uit dan wat ik schreef. Maar het kan zo zijn dat bepaalde verschillend geschreven code hetzelfde resultaat opleverd. Ik weet alleen uit ervaring dat mijn oplossing zou moeten werken. Echter als je het anders wilt opschrijven, be my guest!
Buiten het feit dat de query van de TS netter is, is de jouwe ook gevoeliger voor de settings van de server in het afhandelen van de AND en OR settings. ( tenzij je netjes haakjes zou gebruiken.)
Als ik een persoon moet aannemen en aan de hand van deze queries iemand zou moeten aannemen zou dat dus de TS worden.
c70070540 schreef op vrijdag 26 januari 2007 @ 10:28:
[...]
Lijkt mij duidelijk...
1) FK2 moet 1 zijn en WAARDE moet Ja zijn
EN
2) FK2 moet 2 zijn en WAARDE moet Ja zijn

Of zie ik iets over het hoofd?
Ja dat hij dat eigenlijk dus niet bedoeld, en dus eigenlijk een andere resultaat terug wilt krijgen dan de eisen die hij heeft opgeschreven. Vandaar dat ik wil weten welke records hij verwacht te krijgen. (het zou namelijk niet de eerste keer zijn dat zoiets gebeurd.)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 16:23
Dit krijg ik nu terug:

code:
1
2
3
4
5
6
Id  FK1 FK2 Waarde
1   1     1     Ja
2   1     2     Ja
4   2     1     Ja
7   3     1     Ja
8   3     2     Ja


De waarde id:4 fk1:2 fk2:1 waarde:Ja verwacht ik niet terug. Omdat die alleen FK2=1 en waarde=Ja heeft en niet FK2=2 en waarde=Ja.

Het is trouwens Access en de voorwaarde is dat FK2=1 EN Waarde=Ja EN FK2=2 EN Waarde=Ja

[ Voor 20% gewijzigd door urk_forever op 26-01-2007 10:34 ]

Hail to the king baby!


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
urk_forever schreef op vrijdag 26 januari 2007 @ 10:32:
Dit krijg ik nu terug:

code:
1
2
3
4
5
6
Id  FK1 FK2 Waarde
1   1   1   Ja
2   1   2   Ja
4   2   1   Ja
7   3   1   Ja
8   3   2   Ja


De waarde id:4 fk1:2 fk2:1 waarde:Ja verwacht ik niet terug. Omdat die alleen FK2=1 en waarde=Ja heeft en niet FK2=2 en waarde=Ja.
Eh :?
urk_forever schreef op vrijdag 26 januari 2007 @ 10:32:
Het is trouwens Access en de voorwaarde is dat FK2=1 EN Waarde=Ja EN FK2=2 EN Waarde=Ja
Hoe kan FK2 nou EN 1 EN 2 zijn :?

[ Voor 24% gewijzigd door RobIII op 26-01-2007 10:34 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 26-11 17:32

Gé Brander

MS SQL Server

Hoe kan FK2 in 1 record nou voldoen aan je eis:
FK2=1 & Waarde=Ja EN FK2=2 & Waarde=Ja
?

Telaat...

[ Voor 5% gewijzigd door Gé Brander op 26-01-2007 10:35 ]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Blacksnak
  • Registratie: Oktober 2001
  • Laatst online: 07-07-2024
* Eerst refreshen alvorens te posten... *

[ Voor 85% gewijzigd door Blacksnak op 26-01-2007 10:38 . Reden: te laat ]


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 26-11 17:32

Gé Brander

MS SQL Server

dusty schreef op vrijdag 26 januari 2007 @ 10:32:
[...]

Buiten het feit dat de query van de TS netter is, is de jouwe ook gevoeliger voor de settings van de server in het afhandelen van de AND en OR settings. ( tenzij je netjes haakjes zou gebruiken.)
Als ik een persoon moet aannemen en aan de hand van deze queries iemand zou moeten aannemen zou dat dus de TS worden.

[...]
Gelukkig hoef jij mij niet aan te nemen nu ;) Als je daarop nou moet selecteren...
Ja dat hij dat eigenlijk dus niet bedoeld, en dus eigenlijk een andere resultaat terug wilt krijgen dan de eisen die hij heeft opgeschreven. Vandaar dat ik wil weten welke records hij verwacht te krijgen. (het zou namelijk niet de eerste keer zijn dat zoiets gebeurd.)
Eerst zeg je dat hij dat niet bedoeld, en vervolgens wil je weten welke record hij terug verwacht. Dus je weet nog niet goed wat de TS nu precies wilt en dus niet kan zeggen dat hij dat niet bedoeld... (get the point? ;) )

[ Voor 3% gewijzigd door Gé Brander op 26-01-2007 10:40 ]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 16:23
c70070540 schreef op vrijdag 26 januari 2007 @ 10:35:
Hoe kan FK2 in 1 record nou voldoen aan je eis:
[...]
?

Telaat...
Hmm, daarom kom ik ook hier vragen :+ want ik kom er niet uit :D Maar hoe zou ik dit beter op kunnen lossen dan?
Een subquery? Of iets anders?

Hail to the king baby!


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 25-11 22:57

dusty

Celebrate Life!

Ah!... ik gok dat ik de mysterie heb opgelost.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT
  A.FK1,
  A.FK2,
  B.FK2
FROM
  TABELNAAM A,
  TABELNAAM B
WHERE
  A.FK1=B.FK1
AND
  A.FK2=1
AND
  B.FK2=2
AND
  A.WAARDE=ja
and
  B.WAARDE=ja

Geeft dit wel de resultaat terug die je verwacht?

[ Voor 7% gewijzigd door dusty op 26-01-2007 10:42 ]

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 26-11 17:32

Gé Brander

MS SQL Server

Probeer eerst eens uit te leggen waarom dat record niet mee moet? Hij voldoet aan je eisen die je eerder geeft.

Dus je eisen zijn anders dan in je TS.

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 26-11 17:32

Gé Brander

MS SQL Server

dusty schreef op vrijdag 26 januari 2007 @ 10:41:
Ah!... ik gok dat ik de mysterie heb opgelost.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
  A.FK1,
  A.FK2,
  B.FK2
FROM
  TABELNAAM A,
  TABELNAAM B
WHERE
  A.FK1=B.FK1
AND
  A.FK2=1
AND
  B.FK2=2

Geeft dit wel de resultaat terug die je verwacht?
Dan vergeet je alleen het WAARDE = 'JA' gedeelte...

[ Voor 160% gewijzigd door een moderator op 26-01-2007 11:08 . Reden: moet quoten, niet editten :+ ]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 25-11 22:57

dusty

Celebrate Life!

c70070540 schreef op vrijdag 26 januari 2007 @ 10:42:
[...]
Dan vergeet je alleen het WAARDE = 'JA' gedeelte...
Zoals je aan mijn edit tijd in mijn post ziet, had het al aangepast ;)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 26-11 17:32

Gé Brander

MS SQL Server

hmmm. nu kan ik mijn eigen post niet meer aanpassen... ;)

Ja ik zie het! ok dan!

[ Voor 18% gewijzigd door Gé Brander op 26-01-2007 10:47 ]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 16:23
c70070540 schreef op vrijdag 26 januari 2007 @ 10:42:
Probeer eerst eens uit te leggen waarom dat record niet mee moet? Hij voldoet aan je eisen die je eerder geeft.

Dus je eisen zijn anders dan in je TS.
Deze records wil ik hebben:
FK2=1 & Waarde=Ja EN FK2=2 & Waarde=Ja
Dus:

FK2 moet 1 zijn en Waarde moet Ja zijn EN FK2 moet 2 zijn en waarde moet Ja zijn. Lijkt me duidelijk toch?
Wat Dusty aangeeft werkt inderdaad.

Hail to the king baby!


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:25

Janoz

Moderator Devschuur®

!litemod

Denk eens even na. Hoe kan FK2 nu gelijk zijn aan 1 EN aan 2. Ik ga toch ook niet naar de auto dealer om een rode auto te bestellen die blauw is?

Ik vermoed dat je nog eens even goed na meot denken over het verschil tussen EN en OF. Zeker in de context van booleaanse logica.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 26-11 17:32

Gé Brander

MS SQL Server

urk_forever schreef op vrijdag 26 januari 2007 @ 10:49:
[...]

Dus:

FK2 moet 1 zijn en Waarde moet Ja zijn EN FK2 moet 2 zijn en waarde moet Ja zijn. Lijkt me duidelijk toch?
Wat Dusty aangeeft werkt inderdaad.
In 1 record kan een veld (FK2) niet tegelijk waarde 1 en waarde 2 zijn, tenzij je 12 bedoeld ;)

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 25-11 22:57

dusty

Celebrate Life!

De eisen zijn iets anders dan in de TS.

De records van FK1 waarbij een tuppel voorkomt van FK2 met een waarde 1 en waarde op ja. en een FK2 met een waarde 2 en waarde op ja.

De ID is dus een aangemaakt getal wat onbelangrijk is in dit geval.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Blacksnak
  • Registratie: Oktober 2001
  • Laatst online: 07-07-2024
dusty schreef op vrijdag 26 januari 2007 @ 10:55:
De eisen zijn iets anders dan in de TS.

De records van FK1 waarbij een tuppel voorkomt van FK2 met een waarde 1 en waarde op ja. en een FK2 met een waarde 2 en waarde op ja.

De ID is dus een aangemaakt getal wat onbelangrijk is in dit geval.
Aha, dat maakt het een heel stuk duidelijker! Collega's begonnen al raar te kijken wegens mijn verwarde blijk hier :)

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 26-11 17:32

Gé Brander

MS SQL Server

dusty schreef op vrijdag 26 januari 2007 @ 10:55:
De eisen zijn iets anders dan in de TS.

De records van FK1 waarbij een tuppel voorkomt van FK2 met een waarde 1 en waarde op ja. en een FK2 met een waarde 2 en waarde op ja.

De ID is dus een aangemaakt getal wat onbelangrijk is in dit geval.
Ik zou je best willen geloven, maar waar haal jij dan vandaan dat FK1 er opeens bijgehaald moet worden?

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 10:34

Dido

heforshe

c70070540 schreef op vrijdag 26 januari 2007 @ 11:01:
Ik zou je best willen geloven, maar waar haal jij dan vandaan dat FK1 er opeens bijgehaald moet worden?
offtopic:
Een geniaal moment en een glazen bol, denk ik.
Het klinkt niet eens onlogisch, maar ik vindt het heel knap dat dusty dit afleidt uit d m.i. erg warrige en schijnbaar tegenstrijdige informatie van de TS.

Wat betekent mijn avatar?


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 25-11 22:57

dusty

Celebrate Life!

Laten we zeggen dat ik een redelijke ervaring met databases en gebruikers heb ;)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Jouw eerste statement zou ook moeten werken, alleen mis je een haakje op de laatste regel volgens mij. Daardoor worden er wsl meer records opgehaald dan gedacht.

Volgens mij moet het er zo uitzien:

code:
1
2
3
4
SELECT TABELNAAM.*
FROM  TABELNAAM
WHERE ( TABELNAAM.FK2  in (1 ,2)
   AND TABELNAAM.WAARDE="Ja")


Ik weet zo niet of mysql ook UNION ondersteund, maar dan krijg je zoiets:

code:
1
2
3
4
5
6
7
8
9
SELECT TABELNAAM.*
FROM  TABELNAAM
WHERE  TABELNAAM.FK2 =1 
   AND TABELNAAM.WAARDE="Ja"
UNION
SELECT TABELNAAM.*
FROM   TABELNAAM
WHERE TABELNAAM.FK2 =2 
AND     TABELNAAM.WAARDE="Ja"

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 26-11 17:32

Gé Brander

MS SQL Server

dusty schreef op vrijdag 26 januari 2007 @ 11:08:
Laten we zeggen dat ik een redelijke ervaring met databases en gebruikers heb ;)
Dat blijkt wel ja. Jij kan heel goed tussen de regels door lezen. (Is dat je vrouwelijke kant die je ontwikkeld hebt? Vrouwen praten ook altijd veel, zonder dat ze zeggen wat ze werkelijk bedoelen. Niet dat jij dat doet, maar je bent er goed op ingespeeld. ;) )

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 25-11 22:57

dusty

Celebrate Life!

Even voor de mensen die het nog niet doorhebben :

Bekijk het alsof FK1 de kleur van de auto is, en de FK2 de opties van die auto.. en de waarde dus ja/nee is of het beschikbaar is...

Nu wilt hij alle kleuren weten waarvoor er een autoradio (FK2=1) en een TomTom (FK2=2) beschikbaar is.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
dusty schreef op vrijdag 26 januari 2007 @ 11:14:
Even voor de mensen die het nog niet doorhebben :

Bekijk het alsof FK1 de kleur van de auto is, en de FK2 de opties van die auto.. en de waarde dus ja/nee is of het beschikbaar is...

Nu wilt hij alle kleuren weten waarvoor er een autoradio (FK2=1) en een TomTom (FK2=2) beschikbaar is.
Mja, maar dat had ik graag uit de TS afgeleid en niet uit mijn glazen bol ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 26-11 17:32

Gé Brander

MS SQL Server

dusty schreef op vrijdag 26 januari 2007 @ 11:14:
Even voor de mensen die het nog niet doorhebben :

Bekijk het alsof FK1 de kleur van de auto is, en de FK2 de opties van die auto.. en de waarde dus ja/nee is of het beschikbaar is...

Nu wilt hij alle kleuren weten waarvoor er een autoradio (FK2=1) en een TomTom (FK2=2) beschikbaar is.
Graag nog even een bevestiging hiervan door de TS, dan weet hij ook meteen zeker of zijn oplossing nu goed is of niet.
Want de oplossing kan goed zijn in deze beperkte set test data, maar straks is er iets andere data en dan klopt het toch niet.

[ Voor 10% gewijzigd door Gé Brander op 26-01-2007 11:19 ]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 16:23
dusty schreef op vrijdag 26 januari 2007 @ 10:55:
De eisen zijn iets anders dan in de TS.

De records van FK1 waarbij een tuppel voorkomt van FK2 met een waarde 1 en waarde op ja. en een FK2 met een waarde 2 en waarde op ja.

De ID is dus een aangemaakt getal wat onbelangrijk is in dit geval.
Je hebt inderdaad gelijk :) Maar om het eenvoudig te houden heb ik alleen de tabel waarin de waardes zitten waarop uiteindelijk de selectie gedaan werd als voorbeeld genomen.

Werkelijke opzet ziet er meer zo uit:

Tabel1 met waardes

Tabel2 met waardes met een FK naar tabel1

Tabel3 met gegevens die bij Tabel2 horen met een FK naar tabel2 en een FK naar tabel4

Tabel 4 bevat een omschrijving en properties etc van velden in tabel3.

Hmm eerst refreshen :D, Maar goed het klopt dus wel

Voor elk record in Tabel1 kunnen er 0, 1 of meer waardes in tabel2 voorkomen. Elk record in tabel2 heeft 1 of meerdere records in tabel3, de velden in tabel3 worden beschreven in tabel4 (dus omschrijvingen/veldtypes/veldlengte etc) en bevat dus een FK naar tabel2 en tabel4 en ik wil dus de records uit Tabel 2 hebben waarbij in tabel3 een aantal velden een bepaalde waarde heeft.

[ Voor 21% gewijzigd door urk_forever op 26-01-2007 11:29 ]

Hail to the king baby!


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 13-12-2024
bedoel je zoiets?

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
select t1.*, t2.*, t3.*, t4.* 
from
    tabel1 t1 
,   tabel2 t2
,   tabel3 t3
,   tabel4 t4
where
    tabel1.fk = tabel2.pk
and tabel2.fk = tabel3.pk
and tabel3.fk = tabel4.pk   
and tabel2.waarde = xxx
and tabel3.waarde1 IN ('x','y')
and tabel3.waarde2 IN ('x','y')
-- etc etc


of liever gezegd:

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
select t2.*
from

         tabel2 t2
,        tabel3 t3

where
    
and tabel2.fk = tabel3.pk

and tabel3.waarde1 IN ('x','y')
and tabel3.waarde2 IN ('x','y')
-- etc etc

[ Voor 25% gewijzigd door 4of9 op 26-01-2007 13:30 ]

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...

Pagina: 1