Beste lezers,
Ik ben een scriptje aan het maken.
Nu heb ik een klein probleem en hoop dat iemand mij kan helpen.

Ik heb de volgende MySQL tabel:


===============================
| id | naam1 | naam2 | naam3 | nr1 | nr2 | nr3 |
===============================
| 1 | Mike | Truus | Sander | 4 | 1 | 1 |
===============================

Nu wil ik graag het unieke laagste getal weer geven met de naam
in dit geval is dit Mike met getal 4
(Sander en Truus zijn wel het laagst maar zijn niet uniek)

Hoe kan je dit het beste maken?
Groet Sander
1) Ga eens normaliseren (zie de Tutorials), kolomnamen als naam1, naam2, etc. zijn per definitie fout.
2) Nadat je klaar bent met normaliseren, kun je met de SQL-functies MIN() en MAX() zo de benodigde gegevens opvragen.
3) Ga je niet normaliseren, dan zul je in PHP een brak script moeten schrijven die al het werk van de database (foutloos) moet gaan doen. De kans dat dit goed gaat, is niet zo groot...

Edit: Service van de zaak
Ok dus het best is om de database opbouw te wijzigen?

Zal het volgende voorbeeld beter zijn dan?


===========
| 1d | naam | Nr |
===========
| 1 | Mike | 4 |
| 2 | Truus | 1 |
| 3 | Sander 1 |
==========

en als dit heb hoe geef ik dan het unieke en laagtste getal weer?
groet Sander
ja idd
Deze opzet ziet er goed uit, nu kun je met MIN(), MAX() en COUNT() aan de slag om de minimale en maximale waarde op te halen en te tellen hoeveel resultaten er zijn. Dit gaat overigens niet in 1 query, daar heb je minimaal een subquery voor nodig.

Succes!
lijkt me niet erg evident...
Bestaat wss geen kant-en-klare f(x) voor.
Nu ja eerst stap zal zijn een query maken met min(), daarna met die waarde een een SELECT query uitvoeren om uit te zoeken of er maar 1 record is [uniek dus]
zo niet, zal je het 2de laagste getal moeten zoeken, wss min() + 1 en terug met een sql uitvissen of er juist 1 record aan voldoet deze stappen uitvoeren tot je je laagste en unieke waarde vindt.

Klinkt mij wel iets omslachtig.
Iemand anders ideeën ?
ik zal eens kijken of het lukt.

Maar mocht iemand nog andere iedeeën hebben hoot ik dit graag

groet
Sander

Reageren