[SQL] Hoe doe je dit ?

Pagina: 1
Acties:

  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-08 17:05
Alleereerst nogmaals bedankt voor http://gathering.tweakers.net/forum/list_messages/582151 !

De tabelstructuur is nu als volgt:
tblApparaat(id, naam)
tblEigenschap(id, naam)
tblApparaatEigenschap(apparaatid, eigenschapid, waarde)

Nu wil ik een productoverzicht maken, zodat ik verschillende producten kan vergelijken. Echter, niet elk product heeft dezelfde eigenschappen...
Alle eigenschappen van alle producten in het overzicht moeten getoond worden, maar als een product een eigenschap NIET heeft, dan moet hier gewoon "nvt" of zoiets komen te staan...

Met m'n query's ben ik nu zover ongeveer geraakt, enkel krijg ik die "nvt" er niet in...

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
je kan toch een while loop over je tblEigenschap heen gooien, en dan zoeken of eigenschapid en apparaatid samen in tblApparaatEigenschap voorkomen. Zo nee, print "nvt", zo ja, print de waarde

Ik blijf er iig vrij nuchter onder....


  • dominic
  • Registratie: Juli 2000
  • Laatst online: 21-08 19:07

dominic

will code for food

SQL:

SELECT
tblApparaat.naam as apparaat, tbEigenschap.naam as eigenschap
FROM
tblApparaatEigenschap
JOIN
tblApparaat
ON
tblApparaat.id = tblApparaatEigenschap.apparaatid
JOIN
tblEigenschap
ON
tblEigenschap.id = tblApparaatEigenschap.eigenschapid

En dan in je script:

If rsRecordset("eigenschap") = null then

nou je kunt de rest wel verzinnen, maar vang in je applicatiecode dus de replace af.

Download my music on SoundCloud


  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-08 17:05
Hiermee krijg ik nog steeds voor product A 16 records met eigenschappen, voor product B 21 records, ...
Kga eens proberen met een while loopje erover te zetten, hoewel een volledige SQL natuurlijk wel mooier zou zijn...

edit:

Met de while-loop werkt het, enkel krijg ik hier wel een grote DB-belasting...


edit:

Ok heb 'm rond met een loop, wel niet zo netjes maar ja, toch bedankt iedereen !

  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
hoewel een volledige SQL natuurlijk wel mooier zou zijn...
probeer dit eens:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT 
    tblApparaat.naam as apparaat,
    tblEigenschap.naam as eigenschap
FROM
    tblApparaat
    INNER JOIN
    tblApparaatEigenschap
        ON
        tblApparaat.id = tblApparaatEigenschap.apparaatid
    RIGHT OUTER JOIN
    tblEigenschap
        ON
        tblEigenschap.id = tblApparaatEigenschap.eigenschapid

Pas de replâtrage, la structure est pourrie.


  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Misschien is dit ook wel eens nuttig om te lezen:
http://www.devshed.com/Server_Side/MySQL/SQLJoins/print_html

Ik blijf er iig vrij nuchter onder....


  • dvdhoek
  • Registratie: Februari 2002
  • Laatst online: 30-08 22:07
Kent je DBMS een CASE WHEN constructie? Deze kun je deze namelijk toepassen om een soort IF conditie te maken, die dan de "nvt" zou kunnen aanmaken. Zoek even in de manual of jouw DBMS een CASE WHEN kent.

  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-08 17:05
Ok blijkbaar teveel examenstof in m'n kop... hoe kon ik nu de outer join vergeten }:O 8)7
Pagina: 1