Ik heb een tabel 'spullen'. In deze tabel staan de kolommen 'naam','prijs','omschrijving','bedrijf'.
In de tabel 'spullen' staan meerdere prijslijsten van verschillende winkels. De omschrijving van één van die winkels (laten we zeggen Winkel A) wil ik gebruiken op m'n website.
Als ik het onderstaande gebruik dan krijg ik een lijst van spulletjes met per naam de minimale prijs... alleen pakt hij hier ook gegevens van de andere winkels als omschrijving.
$part=mysqli_query($db,"
SELECT naam, prijs, omschrijving, bedrijf, MIN(prijs) AS minprijs
FROM spullen
GROUP BY naam
ORDER BY naam ASC, minprijs ASC
");
Hoe kan ik het voor elkaar krijgen dat ik de laagste prijs per product krijg en toch ook alleen maar de gegevens van Winkel A?
- Minimale prijs met meerdere gegevens
-
17-03-2016, 15:35 #1Particulier
- Berichten
- 94
- Lid sinds
- 18 Jaar
Minimale prijs met meerdere gegevens
-
-
17-03-2016, 16:23 #264BitsWebhosting.EU
- Berichten
- 2.092
- Lid sinds
- 17 Jaar
Re: Minimale prijs met meerdere gegevens
select naam, prijs, omschrijving, bedrijf
from spullen s1
where prijs = ( select min(prijs) from spullen s2 where s2.naam = s1.naam )
-
17-03-2016, 16:38 #3Particulier
- Berichten
- 94
- Lid sinds
- 18 Jaar
Re: Minimale prijs met meerdere gegevens
Dat is dus het probleem... hier komen dus ook gegevens van andere winkels en niet alleen van Winkel A.
-
17-03-2016, 16:41 #4
- Berichten
- 1.290
- Lid sinds
- 13 Jaar
Re: Minimale prijs met meerdere gegevens
Misschien dan LIMIT 1 gebruiken ?
-
17-03-2016, 16:44 #5Particulier
- Berichten
- 94
- Lid sinds
- 18 Jaar
Re: Minimale prijs met meerdere gegevens
Alle producten moeten getoond worden.
-
17-03-2016, 16:47 #6
- Berichten
- 519
- Lid sinds
- 15 Jaar
Re: Minimale prijs met meerdere gegevens
Bedoel je zoiets?
PHP Code:$part=mysqli_query($db,"
SELECT naam, prijs, omschrijving, bedrijf, MIN(prijs) AS minprijs
FROM spullen
WHERE 'bedrijf' = 'Winkel A'
GROUP BY naam
ORDER BY naam ASC, minprijs ASC
");
-
17-03-2016, 16:49 #7Particulier
- Berichten
- 94
- Lid sinds
- 18 Jaar
Re: Minimale prijs met meerdere gegevens
Bijna, alleen door de WHERE 'bedrijf' = 'Winkel A' komt er niet altijd de laagste prijs uit.
-
17-03-2016, 17:07 #864BitsWebhosting.EU
- Berichten
- 2.092
- Lid sinds
- 17 Jaar
Re: Minimale prijs met meerdere gegevens
Dit geeft je de goedkoopste prijs van elk productnaam. Als je alleen van 1 specifieke winkel wilt hebben dan klopt je vraagstelling niet. (Tenzij 1 winkel hetzelfde product onder 2 verschillende prijzen heeft en in dat geval kun je de WHERE uitbreiden met een selectie op de winkel, maar dat zou dan wel een rare winkel zijn :) ).
-
17-03-2016, 17:08 #9Particulier
- Berichten
- 94
- Lid sinds
- 18 Jaar
Re: Minimale prijs met meerdere gegevens
Ik wil alleen de gegevens van Winkel A tonen (naam en omschrijving), maar de laagste prijs van alle winkels.
-
17-03-2016, 17:19 #1064BitsWebhosting.EU
- Berichten
- 2.092
- Lid sinds
- 17 Jaar
Re: Minimale prijs met meerdere gegevens
dan zou je dit kunnen doen:
select s1.naam, s1.prijs, s1.omschrijving, s1.bedrijf, min(s2.prijs) as minprijs
from spullen s1, spullen s2
where s1.bedrijf = 'Winkel A' and s1.bedrijf = s2.bedrijf
Een selectie op product kun je dan nog toevoegen als je wilt.
Overigens is het als handiger als je even de content van de db (een paar relevante records) toont anders blijft het vaak een beetje gokken wat de query precies moet zijn.
-
17-03-2016, 18:18 #11Particulier
- Berichten
- 1.412
- Lid sinds
- 15 Jaar
Re: Minimale prijs met meerdere gegevens
Zoals John zegt, hoe zit je database in elkaar?
Als je de laagste prijs van alle winkels wil, maar de gegevens van winkel a dan vraag je eigenlijk 2 regels op (als je alles in 1 tabel hebt staan)
Code:[ prijs| winkel | naam ] [ 1,50 | winkel b | stekker ] [ 6,50 | winkel a | topcontact ]
Je zou je database zo kunnen inrichten
Code:[ producten ] [ prijzen ] [ winkels ] [ productid | winkelid | naam ] [ productid | prijs | winkelid ] [ winkelid | naam ] [ 1 | 2 | stekker ] [ 1 | 1,50 | 2 ] [ 2 | winkel A ] [ 1 | 3 | stopcontact ] [ 1 | 6,50 | 3 ] [ 3 | winkel B ]
Dan is het volgens mij iets als
Code:SELECT `naam`, min(`prijs`) FROM `producten` INNER JOIN `prijzen` ON `producten`.`productid` = `prijzen`.`productid` WHERE `producten`.`winkelid` = '2';
Laatst aangepast door Wilbert E. : 17-03-2016 om 18:36
-
17-03-2016, 18:30 #12
- Berichten
- 1.290
- Lid sinds
- 13 Jaar
Re: Minimale prijs met meerdere gegevens
Volgens mij moet je inderdaad zoals Wilbert aangeeft je database opsplitsen en werken met vreemde sleutels.
Dan kun je gemakkelijk namelijk het ID van de winkel opvragen en vervolgens met een andere query de data die bij dat ID hoort.
-
18-03-2016, 15:30 #13Particulier
- Berichten
- 94
- Lid sinds
- 18 Jaar
Re: Minimale prijs met meerdere gegevens
Wilbert, het is helaas niet mogelijk om alles uit te splitsen. Ik kan wel een 2e database aan maken met daarin alleen Winkel A.
-
18-03-2016, 19:13 #14
- Berichten
- 1.345
- Lid sinds
- 18 Jaar
Re: Minimale prijs met meerdere gegevens
Er moet iets zijn dat de producten van winkel A gekoppeld zijn aan de producten van de andere winkels, een productID, koppeltabel of iets dergelijks.
Of je moet 2 query's gebruiken
$part=mysqli_query($db,"SELECT naam, prijs, omschrijving, bedrijf, MIN(prijs) AS minprijs FROM spullen GROUP BY naam ORDER BY naam ASC, minprijs ASC");
while()
{
$part2=mysqli_query($db,"SELECT naam, omschrijving, bedrijf FROM spullen WHERE naam = $row['naam'] AND bedrijf = A");
}
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic