[SQL] return dubbel waar de fields hetzelfde zijn

Pagina: 1
Acties:

  • KMK
  • Registratie: Januari 2000
  • Laatst online: 19:28
ik heb nu een probleem ik wil altijd 3 waarden terug hebben.. ook waar de waarden hetzelfde zijn

SELECT AD_Image,VS_Banner0,VS_Banner1,VS_Banner2
FROM Tbl_Advert
INNER JOIN Tbl_VideoSkin0
ON Tbl_VideoSkin0.VS_Banner0=Tbl_Advert.AD_ID
OR Tbl_VideoSkin0.VS_Banner1=Tbl_Advert.AD_ID
OR Tbl_VideoSkin0.VS_Banner2=Tbl_Advert.AD_ID
WHERE Tbl_VideoSkin0.VS_ID = 6

Als VS_Banner0 1 of 2 gelijk zijn dan krijg ik maar 2 waarden terug en weet ik dus niet welke er dubbel is.. Ik wil eigelijk ze gewoon altijd terug krijgen weet iemand en ide?

Would you like to know more?!! [StarShip Troopers] - Void Station


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Ik snap er helemaal niets van. Probeer het eens op een andere manier uit te leggen. Wat zoek je precies, welke resultset verwacht en welke resultset krijg je nu?

Never underestimate the power of


  • KMK
  • Registratie: Januari 2000
  • Laatst online: 19:28
Wat ik wil is dat ik 3 AD_Image terug krijg met dezelfe of verschillende waarde gerelateers aan VS_BAnner
Nu Krijg ik wel 3 result als VS_BannerX verschillend is als er 1 hetzelfde is krijg ik er maar 2, maar ik wil die dubble ook terug krijgen

Would you like to know more?!! [StarShip Troopers] - Void Station


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Ik wil niet heel vervelend klinken, maar dit riekt een beetje naar een niet al te solide datamodel (eufemisme van de dag ;)).
Kan je relevante zaken uit je datamodel posten? Ik vraag me namelijk af waarom de VS_Banner niet in een losse tabel staan?

offtopic:
Als ik mis zit, vergeef me dan mijn brutaliteit :)

Today's subliminal thought is:


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Ik geloof dat ik het een klein beetje door begin te krijgen: volgens mij wil je altijd drie records terugkrijgen. En per record in de tabel Tbl_VideoSkin0 zijn er een, twee of drie gerelateerde records in de tabel Tbl_Advert.
Maar door deze db-structuur wordt je min of meer gedwongen om alles in één record terug te krijgen. Tenzij je UNION ALL gaat gebruiken, maar dat is ook niet bepaald een fraaie oplossing. Een gewone UNION werkt trouwens absoluut niet, omdat die ook nog een DISTINCT uitvoert, waardoor je de dubbelen dus weer kwijt bent.
Stop je alles in één record dan krijg je zoiets:
code:
1
2
3
4
5
6
7
8
9
10
11
SELECT A0.AD_Image AS AD_Image0,
       A1.AD_Image AS AD_Image1,
       A2.AD_Image AS AD_Image2,
       VS.VS_Banner0,
       VS.VS_Banner1,
       VS.VS_Banner2
FROM Tbl_VideoSkin0 VS
INNER JOIN Tbl_Advert A0 ON A0.AD_ID = VS.VS_Banner0
INNER JOIN Tbl_Advert A1 ON A1.AD_ID = VS.VS_Banner1
INNER JOIN Tbl_Advert A2 ON A2.AD_ID = VS.VS_Banner2
WHERE VS.VS_ID = 6

En met UNION ALL zou je dit krijgen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SELECT AD_Image,
       VS_Banner0,
       VS_Banner1,
       VS_Banner2
FROM Tbl_VideoSkin0
INNER JOIN Tbl_Advert ON Tbl_VideoSkin0.VS_Banner0 = Tbl_Advert.AD_ID
WHERE Tbl_VideoSkin0.VS_ID = 6
UNION ALL
SELECT AD_Image,
       VS_Banner0,
       VS_Banner1,
       VS_Banner2
FROM Tbl_VideoSkin0
INNER JOIN Tbl_Advert ON Tbl_VideoSkin0.VS_Banner1 = Tbl_Advert.AD_ID
WHERE Tbl_VideoSkin0.VS_ID = 6
UNION ALL
SELECT AD_Image,
       VS_Banner0,
       VS_Banner1,
       VS_Banner2
FROM Tbl_VideoSkin0
INNER JOIN Tbl_Advert ON Tbl_VideoSkin0.VS_Banner2 = Tbl_Advert.AD_ID
WHERE Tbl_VideoSkin0.VS_ID = 6

Succes met testen als dit is wat je zoekt en anders succes met uitleggen, want dan heb ik het nog niet begrepen. ;)

Never underestimate the power of