De inhoud van drie tabbelen in één

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Danny von Gaal

Danny von Gaal

30/03/2011 14:06:12
Quote Anchor link
Hello,

Ik wil graag een top 3 tonen op mijn site van de gebruikers die het meest hebben gewonnen.
Nou heb ik in mijn tabel drie velden die heten winnaar1, winnaar2 en winnaar3.

Ik wil graag tonen welke drie gebruikers hier het meest in voorkomen en hoevaak. Dit heb ik al gerealiseerd voor één veld alleen hoe doe ik dit met drie?

Dit is wat ik tot nu toe heb met één veld en dat werkt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$sql3
= "SELECT DISTINCT winnaar1 FROM wedstrijden Limit 3";
$query3 = mysql_query($sql3) or die (mysql_error()."<br>in file ".__FILE__." on line ".__LINE__);
    while($winnaar = mysql_fetch_object($query3)) {
    $winnaar = "".$winnaar->winnaar1."";
$result1 = mysql_query("SELECT winnaar1 FROM wedstrijden WHERE winnaar1 = '$winnaar'");
$aantalwin = mysql_num_rows($result1);
   echo "$winnaar:&nbsp;"; echo "".$aantalwin.""; ?>
x gewonnen.<br />
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php } ?>
Gewijzigd op 30/03/2011 14:07:56 door Danny von Gaal
 
PHP hulp

PHP hulp

15/01/2025 11:14:09
 
- Ariën  -
Beheerder

- Ariën -

30/03/2011 14:14:00
Quote Anchor link
Dit klinkt niet als een goed genormaliseerde database.
Het aantal items die je hebt (winnaar 1, winnaar 2 etc..) moet je nooit laten afhangen van het aantal velden.
 
John D

John D

30/03/2011 14:25:15
Quote Anchor link
- Aar - op 30/03/2011 14:14:00:
Dit klinkt niet als een goed genormaliseerde database.
Het aantal items die je hebt (winnaar 1, winnaar 2 etc..) moet je nooit laten afhangen van het aantal velden.
Hoeft niet een verkeerd datamodel te zijn. Je kan bijvoorbeeld een jaar-week tabel hebben met de attributen jaar/week/winnaar1/winnaar2/winnaar3. In de 3e normaalvorm is dat toegestaan en staat garant voor performance. Ga je naar de 4e normaalvorm dan heeft Aar gelijk. In dat geval wordt je tabel:
jaar/week/winnaar/rank en komt jaar en week altijd driemaal voor en heb je rank=1 of 2 of 3
Gewijzigd op 30/03/2011 14:35:50 door John D
 
Danny von Gaal

Danny von Gaal

30/03/2011 14:56:13
Quote Anchor link
Maar als ik alles in hetzelfde veld gebruik dan komen er bijvoorbeeld drie namen in één veld.
Dat kan ik toch nooit los van elkaar uitlezen?
 
John D

John D

30/03/2011 15:08:11
Quote Anchor link
TOP 3 meest voorkomende winnaars
Om te tellen gebruik je COUNT()
Om de meestvoorkomende(n) te vinden gebruik je ORDER BY
Om je output te limiteren tot 3 gebruik je LIMIT
in jouw tabel wordt dat iets in de orde van:
select winnaar1, count(*)
from wedstrijden group by winnaar1 order by count(*) asc limit 1
union
select winnaar2, count(*)
from wedstrijden group by winnaar2 order by count(*) asc limit 1
union
select winnaar3, count(*)
from wedstrijden group by winnaar3 order by count(*) asc limit 1
Gewijzigd op 30/03/2011 15:09:33 door John D
 
Danny von Gaal

Danny von Gaal

30/03/2011 16:45:15
Quote Anchor link
Maar op die manier heb ik van alle drie de velden de gene die het meest voorkomt.
Dat begrijp ik nog wel, maar het is de bedoeling dat ik een overzicht krijg van de top3 van alle drie de velden.

Het kan dus zijn dat piet voorkomt in veld winnaar 1 en winnaar 2 dan moeten die twee wel bij elkaar worden opgeteld. Dat is juist het probleem.

De tabel ziet er bijvoorbeeld zo uit:
winnaar1 winnaar2 winnaar3
piet ---- henk ---- henk
henk ---- piet ---- jan
leo ----- piet ---- linda
jan ----- chris --- piet

Dan moet de top3 worden:
1. piet
2. henk
3. jan
Gewijzigd op 30/03/2011 16:49:48 door Danny von Gaal
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.