Toon posts:

[SQL] query vraagje

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal,

ik heb hier een query:


code:
1
2
3
4
5
$sql="select DISTINCT(seq), datum, bestelregel.klantnr, 
klantachternaam, pizzanaam from bestelregel,klant, pizza 
            WHERE (bestelregel.klantnr = klant.klantnr)
            AND (bestelregel.pizzanr = pizza.pizzanr)
            group by datum";



deze laat de bestellingen zien van de klanten, maar ondanks dat er meerdere pizza's besteld zijn laat hij er maar eentje zien bij elke klant. Ik weet niet hoe ik dat kan veranderen..

als iemand me kan helpen...

alvast bedankt.

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:31
Waarom staat er daar een group by?

https://fgheysels.github.io/


Verwijderd

Topicstarter
omdat er anders bij elke pizza een naam staat bijv.

jan pizza salami
jan pizza ham
piet pizza ham
piet pizza salami


maar het moet zijn:


jan pizza salami
pizza ham
piet pizza ham
pizza salami

  • BovenHond
  • Registratie: Februari 2002
  • Laatst online: 13:49
Verander het woordje "group" in group by in "order" als in order by

Overigens is het niet geheel duidelijk wat je precies wilt.

(geagregeerde data, zeg maar verzamelingen, bijvoobeeeld aantal pizza's per klant)
(of platte data, alle transacties, alle bestellingen etc)

Verwijderd

sum(hoeveelheid) is het totaal van de pizza's. Distinct weglaten want je doet al een group by.

Verwijderd

Topicstarter
jamaar dan staat bij elke pizza een naam ervoor,

het moet uiteindelijk zijn:


jan pizza 1
pizza 2
pizza 3


piet pizza 1
pizza 2


enz

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:31
Een group by gebruik je enkel als je aggregated functions gebruikt in je SELECT list, en dan moet je alle velden in de group by opnemen die geen aggr. functie zijn.

Maar goed, MySQL is daar -imho onterecht- losser in, en dan krijg je van die problemen.
Een DISTINCT zou trouwens ook op row-niveau moeten werken, en niet op veld-niveau.

SQL is trouwens een taal waarmee je de gegevens kunt ophalen. Het is niet de taak van SQL om de gegevens te formatteren in de layout die jij wilt, dat is de taak van je clientprogramma.

[ Voor 22% gewijzigd door whoami op 13-01-2004 10:52 ]

https://fgheysels.github.io/


  • momania
  • Registratie: Mei 2000
  • Laatst online: 13:28

momania

iPhone 30! Bam!

Verwijderd schreef op 13 januari 2004 @ 10:50:
jamaar dan staat bij elke pizza een naam ervoor,

het moet uiteindelijk zijn:


jan pizza 1
pizza 2
pizza 3


piet pizza 1
pizza 2


enz
Dan moet je meerdere queries uitvoeren:
1 om alle namen op te halen en dan per naam een query de pizza's.

Zoals je nu je query hebt, zal je altijd bij elke regel een naam houden. Daar vraag je met je query om dus dan krijg je dat ook. ;)

Neem je whisky mee, is het te weinig... *zucht*


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Verwijderd schreef op 13 januari 2004 @ 10:46:
omdat er anders bij elke pizza een naam staat bijv.

jan pizza salami
jan pizza ham
piet pizza ham
piet pizza salami


maar het moet zijn:


jan pizza salami
pizza ham
piet pizza ham
pizza salami
Dit moet je oplossing in de client applicatie, niet in een SQL Query.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
momania schreef op 13 januari 2004 @ 10:52:
[...]


Dan moet je meerdere queries uitvoeren:
1 om alle namen op te halen en dan per naam een query de pizza's.
Lijkt me niet zo'n goed idee. Je kunt ze eenvoudig met 1 query ophalen en in de applicatie netjes weergeven.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • momania
  • Registratie: Mei 2000
  • Laatst online: 13:28

momania

iPhone 30! Bam!

P_de_B schreef op 13 januari 2004 @ 10:54:
[...]


Lijkt me niet zo'n goed idee. Je kunt ze eenvoudig met 1 query ophalen en in de applicatie netjes weergeven.
Kan ook, gaat er om dat hij gewoon krijgt wat hij vraagt met de query idd, opmaak moet je ander doen.

* momania is ook nog niet helemaal wakker :P

Neem je whisky mee, is het te weinig... *zucht*


Verwijderd

waarschijnlijk bedoel je zoiets

code:
1
2
3
4
5
6
7
8
select k.klantnaam
          , a.pizzanaam
from klant k,
        (select distinct b.klantnr, p.pizzanaam
          from bestelregel b, pizza p
          where bestelregel.pizzanr = pizza.pizzanr
        ) a
where k. klantnr = a.klantnr

[ Voor 4% gewijzigd door Verwijderd op 13-01-2004 11:02 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:28

gorgi_19

Kruimeltjes zijn weer op :9

Volgens mij krijg je dan min of meer hetzelfde effect als de query in de startpost, met als enige verschil dat de query in de startpost geen subqueries gebruikt, maar gebruik maakt van een normale JOIN.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Pseudo code
code:
1
2
3
4
5
6
7
8
9
10
11
Haal_Alle_Records_Op
varHuidigeNaam = RecordSet.Naam
Print_Naam
Print_Records
Start_Loop
Ga_Naar_Volgend_Record
IF RecordSet.Naam <> varHuidigeNaam
    Print_Naam
END IF
Print_Records
End_Loop

Oops! Google Chrome could not find www.rijks%20museum.nl

Pagina: 1