Nieuw (groots) project, mail me wat je er van vindt
Tevens in het bezit van een beeldschone vriendin
Gewoon kop_fotobed.bedrijven toevoegen aan je select-clause en je group by - clause?
https://fgheysels.github.io/
1
2
3
| SELECT Kop_fotobed.fotosoort, Min(Kop_fotobed.kosten) AS MinOfkosten, kop_fotobed.bedrijven FROM Kop_fotobed GROUP BY Kop_fotobed.fotosoort, kop_fotobed.bedrijven; |
Dit geeft mij echter een lijst met alle prijzen, alle formaten en alle bedrijven...
en
1
2
3
| SELECT Kop_fotobed.fotosoort, Min(Kop_fotobed.kosten) AS MinOfkosten, Min(Kop_fotobed.bedrijf) AS MinOfbedrijf FROM Kop_fotobed GROUP BY Kop_fotobed.fotosoort; |
geeft alleen het laagste nummer weer van de bedrijven...
[ps, bedrijven moest eigenlijk bedrijf zijn, maar dat maakt verder niets uit]
Nieuw (groots) project, mail me wat je er van vindt
Tevens in het bezit van een beeldschone vriendin
https://fgheysels.github.io/
Verwijderd
Uit het hoofd zou dit wellicht kunnen werken (maar kan niet testen want heb je database niet bij de hand)
1
2
| SELECT fotosoort, Min(kosten) AS MinOfKosten, bedrijven FROM fotobed GROUP BY fotosoort, bedrijven |
ik heb 3 velden; fotosoort, kosten en bedrijf
het tabel ziet er zo ongeveer uit:
1
2
3
4
| formaat1 0.45 bedrijf1 formaat1 0.50 bedrijf3 formaat2 0.10 bedrijf2 formaat2 0.05 bedrijf4 |
wat ik wil is dat alleen de laagste prijzen per formaat weergegeven worden met daarachter welk bedrijf het is (dus:)
1
2
| formaat1 0.45 bedrijf1 formaat2 0.05 bedrijf4 |
Nieuw (groots) project, mail me wat je er van vindt
Tevens in het bezit van een beeldschone vriendin
Deze SQL geeft gewoon alles weer... Je denkt dus dat het misschien niet mogelijk is? Moet ik dan 2 queries maken?Verwijderd schreef op 09 augustus 2002 @ 14:42:
(...)
Uit het hoofd zou dit wellicht kunnen werken (maar kan niet testen want heb je database niet bij de hand)
code:
1 2 SELECT fotosoort, Min(kosten) AS MinOfKosten, bedrijven FROM fotobed GROUP BY fotosoort, bedrijven
Nieuw (groots) project, mail me wat je er van vindt
Tevens in het bezit van een beeldschone vriendin
Je hebt redundante data en uw 'datamodel' is niet flexibel.
Begin eens met 3 tabellen te maken:
een tabel foto, een tabel bedrijf en een tabel foto_bedrijf.
De tabel foto houdt informatie bij over de foto's (foto_id, foto_formaat, ...)
De tabel bedrijf houdt informatie bij over bedrijven (bedrijf_id, bedrijfnaam, ...)
en de tabel foto_bedrijf houdt bij welke bedrijven welke foto-formaten leveren en welke prijs). (foto_id, bedrijf_id, prijs)
Begin daar eerst eens mee, en dan kunnen we eens verder denken over de query.
(tip: in de P&W FAQ staat er ergens een linkje naar een tutorial over 'normaliseren'. Neem die misschien ook eens door).
https://fgheysels.github.io/
Zo zit het al in elkaarJe hebt om te beginnen een slecht datamodel.
Je hebt redundante data en uw 'datamodel' is niet flexibel.
Begin eens met 3 tabellen te maken:
een tabel foto, een tabel bedrijf en een tabel foto_bedrijf.
De tabel foto houdt informatie bij over de foto's (foto_id, foto_formaat, ...)
De tabel bedrijf houdt informatie bij over bedrijven (bedrijf_id, bedrijfnaam, ...)
en de tabel foto_bedrijf houdt bij welke bedrijven welke foto-formaten leveren en welke prijs). (foto_id, bedrijf_id, prijs)
Begin daar eerst eens mee, en dan kunnen we eens verder denken over de query.
(tip: in de P&W FAQ staat er ergens een linkje naar een tutorial over 'normaliseren'. Neem die misschien ook eens door).
Nieuw (groots) project, mail me wat je er van vindt
Tevens in het bezit van een beeldschone vriendin
Verwijderd
Tja, eenleuk probleemVerwijderd schreef op 09 augustus 2002 @ 15:07:
Het punt is dat bij 2 bedrijven met dezelfde prijs je niet 1 row krijgt maar 2. Dit is dus het probleem en daarom kan het niet middels die group by. Het is wel een leuk probleem, ik kom er niet 1 2 3 op en daar baal ik wel een beetje van *grmbl*, ik zou het nl. ook niet 1 2 3 weten met subqueries. Ben nog ff bezig met iets anders en dan probeer ik het ff lokaal hier.
Nieuw (groots) project, mail me wat je er van vindt
Tevens in het bezit van een beeldschone vriendin
Verwijderd
Verwijderd
1
2
3
4
5
6
7
8
9
10
11
12
| SELECT *
FROM
foto_bedrijf INNER JOIN bedrijven ON
foto_bedrijf.BedrijfID = bedrijven.bedrijfID INNER JOIN
fotos ON foto_bedrijf.fotoID = fotos.fotoID
WHERE
foto_bedrijf.BedrijfID IN
(
SELECT TOP 1 BedrijfID FROM foto_bedrijf AS fb2
WHERE fb2.fotoID = foto_bedrijf.fotoID
ORDER BY prijs ASC
) |
select * from blabla where id in (select min(kosten) from blabla group by blabla)
Soort van, dus
[ Voor 0% gewijzigd door GarBaGe op 09-08-2002 15:26 . Reden: te laat :( ]
Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD
Tnx voor jullie hulp tot nu toe, (nogmaals) ik hou jullie op de hoogte!
Nieuw (groots) project, mail me wat je er van vindt
Tevens in het bezit van een beeldschone vriendin
Verwijderd
1
2
3
4
5
6
7
| select foto.formaat, bedrijf.naam, min(kosten) from foto inner join foto_kosten on foto_kosten.fotoid = foto.id inner join bedrijf on foto_kosten.bedrijfid = bedrijf.id where kosten = (select min(fk2.kosten) from foto_kosten fk2 where fk2.fotoid = foto.id) group by foto.formaat, bedrijf.naam |
Conceptueel klopt dit, het levert precies op wat je wilt op de manier waarop je dit zou formuleren in nederlands (doe me de fotoformaat, het bedrijf en de prijs waarvan geldt dat de prijs per foto-formaat het laagst is).
Ik zie echter ook dat 2x een aggregate niet echt fijn is als je grote tabellen hebt

Bedrijven bevat dus een lijst van bedrijven
Formaten bevat een lijst van formaten
Kop_fotobed koppelt bedrijven aan formaten en de bijbehorende prijzen...
Nieuw (groots) project, mail me wat je er van vindt
Tevens in het bezit van een beeldschone vriendin
Verwijderd
https://fgheysels.github.io/