[SQL] Ingewikkelde query? *

Pagina: 1
Acties:

  • kaandorp
  • Registratie: November 1999
  • Laatst online: 16-08 20:11
Ik heb 4 tabellen

tabel1: merken
merk_id
omschrijving

tabel2: types
type_id
merk_id
omschrijving

tabel3: carkits
carkit_id
omschrijving

tabel4: prijzen
prijs_id
type_id
carkit_id

In merken staan automerken (Bijv. BMW) en in types de types van het merk (Bijv. 3-serie, 5-serie, etc.).
In carkits staan de verschillende soorten carkits die er leverbaar zijn en in prijzen staan de prijzen die bij de combinatie van een carkit in een specifieke auto moeten.

Ik moet nu een tabel maken met langs de horizontale as de carkits en langs de verticale as de autos.

Dus bijvoorbeeld zoiets:

code:
1
2
3
4
5
6
##################################################
#*********# Nokia 3110 # Nokia 6210 # Nokia 6310 #
# 3-serie #    123,-   #            #    213,-   #
# 5-serie #            #    321,-   #    342,-   #
# 7-serie #    400,-   #    400,-   #    400,-   #
##################################################


Hoe kan ik dit het beste aanpakken? Ik zat te denken om eerst met een script een multi-dimensionale array te vullen met de gegevens en die later met een ander script tot een HTML-tabel te parsen.

Dan krijg je dus bijvoorbeeld zo'n array:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$fruits = array (
    "3-serie"  => array (
        "Nokia 3110" => "123,-",
        "Nokia 6210" => "",
        "Nokia 6310" => "213,-"
        ),
    "5-serie"  => array (
        "Nokia 3110" => "",
        "Nokia 6210" => "321,-",
        "Nokia 6310" => "342,-"
        ),
    "7-serie"  => array (
        "Nokia 3110" => "400,-",
        "Nokia 6210" => "400,-",
        "Nokia 6310" => "400,-"
        ),
);


Is dit makkelijk voor elkaar te krijgen met 1 makkelijke query? Of moet ik queries gaan nesten?

  • kaandorp
  • Registratie: November 1999
  • Laatst online: 16-08 20:11
Kan iemand deze even moven? naar webscripting. Heb mis geklikt :P

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 21-08 10:46
Sure, van W&G naar P&W

*hoppa over schutting*

Verwijderd

Ik neem aan dat je je gegevens uit een database haalt? In dat geval kun je sneller rechtstreeks een tabel opbouwen met de uitkomst van een query. Ik zou het niet eerst in arrays gaan zetten en dan nog een keer uitlezen als ik jou was.

  • kaandorp
  • Registratie: November 1999
  • Laatst online: 16-08 20:11
Het komt uit een MySQL db. Hoe zou ik die SQL-statement moeten contrueren, zodat het daarna bruikbaar is om er een mooie tabel van te brouwen?

Verwijderd

Heb je al eens vaker gewerkt met deze constructie? (database-php)

  • kaandorp
  • Registratie: November 1999
  • Laatst online: 16-08 20:11
Jazeker. Dat is ook helemaal niet het probleem hoor.
Misschien stel ik de vraag niet helemaal netjes.
Ik ga nog even verder denken en proberen een duidelijkere vraag te maken moment.

Verwijderd

kaandorp schreef op 14 januari 2003 @ 21:30:
Jazeker. Dat is ook helemaal niet het probleem hoor.
Misschien stel ik de vraag niet helemaal netjes.
Ik ga nog even verder denken en proberen een duidelijkere vraag te maken moment.
Ok

[ Voor 100% gewijzigd door Verwijderd op 14-01-2003 21:35 ]


Verwijderd

Ik weet niets van carkits maar ik denk dat je de prijzen naar de carkit moet verhuizen (of is dat afhankelijk van de auto waar je het instopt?, of hangt het ook nog van de verkoopplek af ? Maak dan een tabel voor shops aan en koppel die aan de carkit... stop dan de prijs in de koppeltabel (of maar een extra) etc... ) indien een carkit in meerdere auto's kan (en een auto meerdere carkits aankan) moet je een koppeltabel maken zodat je many-to-many relaties kunt aanmaken tussen carkits en koppel tabellen). Denk in relaties en het design (en dus ook de queries) wordt meestal na een tijdje vanzelf duidelijk...

  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
tabel4: prijzen
prijs_id
type_id
carkit_id
ik neem aan dat 'prijs_id' eigenlijk 'prijs' is?

deze query lijkt me goed:
code:
1
2
3
SELECT p.prijs, t.omschrijving, c.omschrijving
FROM prijzen p RIGHT OUTER JOIN carkits c ON (p.carkit_id = c.carkit_id) RIGHT OUTER JOIN types t ON (p.type_id = t.type_id)
ORDER BY t.type_id, c.carkit_id

door de resultset kun je nu zo heen loopen
je moet alleen wel weten hoeveel verschillende carkits er zijn

Pas de replâtrage, la structure est pourrie.


  • kaandorp
  • Registratie: November 1999
  • Laatst online: 16-08 20:11
Perfect! Dat werkt lekker.

Nou zat ik te denken... (jaja)...

Ik moet het nu als een tabel op bovenstaande manier uitpoepen, maar waarschijnlijk in de nabije toekomst ook als PDF. Is het dan toch niet makkelijker om eerst alles wat terugkomt van de query in die multi-dim. array te gooien? Dan is het daarna makkelijker om er een HTML of PDF parser voor te schrijven. (Denk ik) Zit ik goed?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09:23

.oisyn

Moderator Devschuur®

Demotivational Speaker

titel fix

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

kaandorp schreef op 14 januari 2003 @ 23:33:
Perfect! Dat werkt lekker.

Nou zat ik te denken... (jaja)...

Ik moet het nu als een tabel op bovenstaande manier uitpoepen, maar waarschijnlijk in de nabije toekomst ook als PDF. Is het dan toch niet makkelijker om eerst alles wat terugkomt van de query in die multi-dim. array te gooien? Dan is het daarna makkelijker om er een HTML of PDF parser voor te schrijven. (Denk ik) Zit ik goed?
Ik denk niet dat het voordelen op zal leveren een tussenstap te maken in de vorm van een mul.dim.array. Tenzij je echt het id hebt dat die tussenstap het programmeren naar pdf straks een stuk makkelijker maakt. Anders zou ik zeggen bouw je tabel rechtstreeks op met de uitkomst van de query.

  • kaandorp
  • Registratie: November 1999
  • Laatst online: 16-08 20:11
Ik denk dat het zeker wel voordelen oplevert. Als je namelijk eerst een class maakt die de data extract en in een array zet is het naderhand makkelijker om daar verschillende soorten parsers voor te maken. Zou het eventueel ook in XML kunnen doen, maar daar moet ik nog even over denken.

Verwijderd

Ik bedoel meer dat het volgens mij niet echt nodig is om het in een array te zetten. Een class schrijven kan nooit kwaad en daarmee zou je idd kunnen bereiken dat het naderhand makkelijker is die data op te halen. Maar ik denk dat het wegschrijven van de uitkomst van een query naar een array (bv in die class) een stap is die je helemaal niet nodig hebt. Het levert in mijn ogen geen toegevoegde waarde.

Ik ben natuurlijk niet op de hoogte van hoe je die class wilt gaan gebruiken enz dus misschien zit ik er wel naast. Ik heb zelf nl ook weleens gebruik gemaakt van arrays om dingen uit een database in op te slaan. Ik zie niet in waarom arrays het maken van verschillende parsers gemakkelijker zouden moeten maken, that's all.
Pagina: 1