Top 10 ectie uit database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Pin Da

Pin Da

05/06/2006 17:05:00
Quote Anchor link
Ik heb een database met de volgende tabel: Bestellingen.
Deze tabel wil ik dmv de volgende velden: Artikelen en Aantallen laten sorteren op het meest gekozen/bestelde product.

Aangezien het makkelijker was om de gekozen artikelen + aantallen direct te plaatsen vanuit de winkelmand naar de uiteindelijke bestelling, worden ze op de volgende wijze geplaats in de database (velden):

- Order_ID: Nieuw automatisch ordernummer,
- Artikel_ID: Gekozen artikelen achter elkaar onderscheiden door ';' (dus bv: 14;9;2;11)
- Aantal: Aantallen acher elkaar onderscheiden door ';' (dus bv: 1,2,1,3) Deze hebben dezelfde volgorde als artikelen. Dus artikel_ID 9 is 2 keer besteld.

Nu wil ik de artikelen laten sorteren op meest gekozen (eerste 10)

Tot nu toe heb ik dit maar ik kom er niet echt verder uit.

---------------------------------------------------

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
$query
= mysql_query ("SELECT * FROM Bestellingen");
while ($result = mysql_fetch_array($query)){  

$Artikel_ID = $result['Artikel_ID'];  
$Aantal = $result['Aantal'];
$Order_ID = $result['Order_ID'];  

    
   $array_art = explode(";", $Artikel_ID);
   $array_aantal = explode(";", $Aantal);
    
   $c = count ($array_art)-1;
echo $Order_ID;    
for($i=0; $i<$c; $i++){
   $value1 = $array_art[$i];
   $value2 = $array_aantal[$i];
   $optelsom .= "-".$value1;
    
   echo "Value: $value1 - $value2";
}

echo "<br>";        
echo "<br>";
}

echo $optelsom;
?>


-------------------------------------------

Volgens mij zit ik helemaal fout en kan het veel makkelijker.

Ik wil in principe gewoon de(zelfde) artikel_ID's tellen en multipliceren met het aantal.

Stel ik heb dit in de database staan:
Artikel_ID: 14;12;9;12;9;5;14;12
Aantal: 1;1;2;1;2;1;1;1

Dan ik even een simpele weergave die onderussen onthouden moet worden:

14 12 9 9 12 9 9 5 14 12

Vervolgens

9 (4x)
12 (3x)
14 (2x)
5 (1x)

Als ik deze artikelen eenmaal in deze volgorde heb, dan kan ik zo de bijhorende artikelen uit de artikelen tabel oproepen.

ZOUDEN JULLIE MIJ KUNNEN HELPEN?
 
PHP hulp

PHP hulp

17/11/2024 02:29:07
 
Frank -

Frank -

05/06/2006 17:09:00
Quote Anchor link
Quote:
- Artikel_ID: Gekozen artikelen achter elkaar onderscheiden door ';' (dus bv: 14;9;2;11)
- Aantal: Aantallen acher elkaar onderscheiden door ';' (dus bv: 1,2,1,3) Deze hebben dezelfde volgorde als artikelen. Dus artikel_ID 9 is 2 keer besteld.

Dat is een heel slecht datamodel... Helaas, uithuilen en opnieuw beginnen is de enige echte oplossing. Ieder artikel staat in zijn eigen record. Wanneer een artikel in 1 bestelling meerdere keren voorkomt, dan zit je dit in de kolom 'aantal'.

Wanneer je het datamodel goed hebt, kun je met SUM() vrij eenvoudig per artikel opvragen hoevaak deze is besteld.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
SELECT
  artikel,
  SUM(aantal) as besteld
FROM
  tabelnaam
GROUP BY
  artikel
ORDER BY
  aantal DESC
LIMIT 10


Edit: Nog even de top-10 in de query gezet. Met ASC kun je oplopend sorteren.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Jan Koehoorn

Jan Koehoorn

05/06/2006 17:10:00
Quote Anchor link
Dit is een slecht datamodel omdat je meer dan één waarde in een veld stopt. Dat maakt het erg lastig om er dit soort dingen uit te laten rollen.
 
Frank -

Frank -

05/06/2006 17:11:00
Quote Anchor link
En om de service compleet te maken nog even de url naar de tutorial over normalisatie.
 



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.