Toon posts:

SQL database duplicaties

Pagina: 1
Acties:

Verwijderd

Topicstarter
had een vraag over eht uilezen van een database, voorbeeld ik heb een data base met klanten en sommige klanten die 2 verschillende produkten hebben hebben het zelfde klantnummer toegewezen gekregen in de database, met bij elke regel het produkt voorbeeld van de database :

klant nr - klant naam -- klant produkt

0123 - jan de boer - scanner
0123 - jan de boer - printer
0122 - henk vis - hardeschijf
0111 - johan prins - geheugen

nou wil ik dat als ik me databse uitlees dus niet 2x de zelfde klant nr onderelkaar komt te staan, maar dat als de klant nr meerdere keren voor komt deze alleen een keer te weergeven.

Dan de vraag, hoe kan ik dit het beste doen.

Verwijderd

Topicstarter
was trouwens vergete te zeggen dat ik dit in php schrijf ;)

  • Noork
  • Registratie: Juni 2001
  • Niet online
Dit is gewoonweg geen goed genormaliseerde database. Dit zou ik eerst doen alvorens verder te gaan met php.

  • Superdeboer
  • Registratie: December 2002
  • Niet online

Superdeboer

Sa-weee-tah

Aan je select statement toevoegen:
SQL:
1
GROUP BY `klant naam`


Dit was denk ik vrij simpel in eenvoudige tutorials of via de search te vinden geweest overigens. :)
Noork:
Dit is gewoonweg geen goed genormaliseerde database. Dit zou ik eerst doen alvorens verder te gaan met php.
Dat is zonder meer waar. Klantnamen horen niet thuis als veld in deze tabel, maar vormen een eigen object en horen in een aparte tabel thuis. Dan heb je dus twee tabellen: één met je producten en één met je klanten. Vervolgens maak je nog een tabel, die je bestellingen noemt. In die tabel leg je dan de relatie (vandaar dat het *relationele database* heet!) tussen de klant en het product dat hij nodig heeft. Hierdoor voorkom je onnodige redundancy in je tabellen en krijg je een veel efficiënter database-model. Voor een uitleg over databasenormalisatie zou je hier eens kunnen kijken. :)

[ Voor 71% gewijzigd door Superdeboer op 27-09-2005 00:03 ]

When I write my code, only God and I know what it means. One week later, only God knows.
Hell yes it's a Cuban Cigar, but I'm not supporting their economy, I'm burning their fields.


  • schwennert
  • Registratie: September 2005
  • Laatst online: 08-06-2025
Normaliseren is een goede stap. Vervolgens zou je prima de opdracht DISTINCT kunnen gebruiken en niet GROUP BY. Hoewel dit laatste mogelijk is, is dit niet de hoofdfunctie van GROUP BY.

Succes Sven

sven


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Superdeboer schreef op maandag 26 september 2005 @ 23:57:
Aan je select statement toevoegen:
SQL:
1
GROUP BY `klant naam`
Dat hangt wel een beetje van het select statement af natuurlijk; er moet natuurlijk wel gegroepeerd worden op alle velden die geselecteerd worden, behalve die wat al onder een aggregate function vallen. Meer info: P&W FAQ - SQL: Hoe werkt dat GROUP BY nu eigenlijk?

En inderdaad, die database is niet goed genormaliseerd, daar zou ik meteen wat aan doen als het even kan.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • whoami
  • Registratie: December 2000
  • Nu online
Superdeboer schreef op maandag 26 september 2005 @ 23:57:
Aan je select statement toevoegen:
SQL:
1
GROUP BY `klant naam`


Dit was denk ik vrij simpel in eenvoudige tutorials of via de search te vinden geweest overigens. :)
Een group by moet je enkel gebruiken als je ook aggregates gebruikt. Dat dit werkt in MySQL wil niet zeggen dat het daarom juist is.
Maar ik ben het wel met je eens dat de DB niet (goed) genormaliseerd is.

[ Voor 8% gewijzigd door whoami op 27-09-2005 08:54 ]

https://fgheysels.github.io/

Pagina: 1