Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[SQL]Optellen gelijke records over meerdere tabellen

Pagina: 1
Acties:
  • 345 views sinds 30-01-2008
  • Reageer

  • Razr
  • Registratie: September 2005
  • Niet online
Luitjes,

Ben bezig met een winkelwagen waarvan de data tijdelijk word opgeslagen in een db (zolang iemand aan het winkelen is). Nu heb ik twee tabellen. Een tabel waarin de producten komen te staan, en een tabel waarin aanvullingen op deze producten komen (bijv extra zout etc.). En ja het gaat over eten ;)

Tabel 1 (dus de 'hoofd' tabel)
KoppelnummerProductnummerGebruikersnummerAantalSubgroepMemo
112312312Blaatnull
213627311Bleetnull
312312319Blaatnull


Nu de tabel met de aanvullingen
KoppelnummerProductnummerSubgroepGebruikersnummer
1587232Blaat1
3587232Blaat1


Zoals je kunt zien zijn is er 2 keer hetzelfde product toegevoegd, een keer met het aantal 2 en een keer met het aantal 9. Ook in tabel 2 zijn de gegevens gelijk. Nu wil ik dit dus op kunnen tellen. Ik wil niet dat er op de overzicht van de bestelling staat van 1 friet met en een paar regels later nog een keer 3 friet met. Dat moet gewoon in 1x 4 friet met zijn.

Het mag alleen bij elkaar opgeteld worden als in tabel 1 het productnummer,gebruikersnummer en subgroep hetzelfde zijn. En als er een koppeling is naar tabel 2 moet daar ook het productnummer en de subgroep gelijk zijn.

Ik ben al bezig geweest met joins:
SQL:
1
2
3
4
SELECT     SUM(TBL_WWT.Aantal)
FROM         TBL_WWT INNER JOIN
                      TBL_WWT_K_KOPPELING_AANVULLING ON TBL_WWT.Koppelnummer = TBL_WWT_K_KOPPELING_AANVULLING.Koppelnummer
WHERE     (TBL_WWT.Productnummer = 123123) AND (TBL_WWT.Gebruikersnummer = 1) AND (TBL_WWT.Subgroep = 'Foodstore')


dit telt de aantallen wel netjes op maar houdt geen rekening met de productnummers in tabel 2. Ik heb al gegoogled op dingen als compare etc. maar kon niets vinden. Ik hoop dat hier een sql guru is die me even kan helpen? Alvast bedankt :)

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Ik zou er een GROUP BY en een COUNT tegenaan gooien, helpt dat je op weg? :)

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • Razr
  • Registratie: September 2005
  • Niet online
CodeCaster schreef op dinsdag 04 september 2007 @ 23:27:
Ik zou er een GROUP BY en een COUNT tegenaan gooien, helpt dat je op weg? :)
He dat helpt me inderdaad op weg :)

Krijg met deze querie:
SQL:
1
2
3
4
SELECT     TBL_WWT_K_KOPPELING_AANVULLING.Productnummer AS AanvullingId,SUM(TBL_WWT.Aantal)
FROM         TBL_WWT INNER JOIN
                      TBL_WWT_K_KOPPELING_AANVULLING ON TBL_WWT.Koppelnummer = TBL_WWT_K_KOPPELING_AANVULLING.Koppelnummer
WHERE     (TBL_WWT.Productnummer = '123123') AND (TBL_WWT.Gebruikersnummer = 1) AND (TBL_WWT.Subgroep = 'Blaat') GROUP BY TBL_WWT_K_KOPPELING_AANVULLING.Productnummer


Dit terug:
AanvullingId(No column name)
58723211


Dus dat is inderdaad de gelijke records opgeteld :9

Maarr..

Wanneer ik in tabel 2 de volgende data heb:
KoppelnummerProductnummerSubgroepGebruikersnummer
1587232Blaat1
3587232Blaat1
1432321Blaat1


Klopt het al niet meer :( Ik heb dan 2x de combinatie met 432321 en 11x die met 587232. Terwijl ik gewoon 11x de combinatie heb van het productnummer uit tabel 1 (123123) met zowel 432321 én 587232.

Maar ik heb geen idee hoe ik dit nou uit die tabellen moet halen en in een logische output kan veranderen.

Edit:
De volgende output lijkt mij het handigst:
KoppelnummerSubgroepProductIdAanvullingsIdAantal
1Blaat12312358723211
1Blaat12312343232111


En dat ik vervolgens in mijn code ervoor zorg dat wanneer de koppelnummers gelijk zijn de aanvullingen bij elkaar horen. Dit lijkt mij de makkelijkste manier?
Maar ik krijg dit niet voor elkaar, hij blijft zeuren dat ik alleen SELECT kan doen op de velden van de GROUP BY en op diegene die ik gebruik voor de SUM(). Hoe zorg ik dat ik bovenstaande output krijg? :?

[ Voor 65% gewijzigd door Razr op 05-09-2007 00:41 ]


  • r0bert
  • Registratie: September 2001
  • Laatst online: 28-11 00:42
Lijkt me niet handig om het koppelnummer niet uniek te houden :?
Hier wringt de schoen wel.

Als je nu in tabel twee, twee keer hetzelfde koppelnummer hebt, betekent dat dus dat het én met zout én met peper is? Dan kun je ze niet samenvoegen, omdat anders de aanvullingen niet meer te achterhalen zijn (alleen óf zout óf peper). Je tweede overzicht moet dus wel? (Group by koppelnr, aanvullingnr + order by aanvullingnr)

[ Voor 98% gewijzigd door r0bert op 05-09-2007 14:39 ]