Toon posts:

[access/sql] tussentable en waarden berekenen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een meer op meer relatie,

dus

1.product --------2.product_order-------------3.order

nu is het uitlezen van de waarden geen problemen maar nu wil ik een eis toevoegen, ik wil bv alle producten zien die meer dan 50x besteld zijn.. dit moet uiteraard met count en moet de tabellen waarschijnlijk nog LEFT JOINEN(?), maar wat ik ook probeer, ik krijg altyd een error over dat x geen deel maakt van statistische functie.. wat doe ik verkeerd, wie geeft een tip hoe het wel moet het wel? aangzien ik op internet alleen maar join voorbeelden zie van 2 tabellen en niet met een tussentabel. Met mijn handen in mijn haar ...


code:
1
2
3
SELECT Products.ProductName,Orders.OrderID
FROM Products,Orders,OrderDetails
WHERE Products.ProductID=OrderDetails.ProductID AND  Orders.OrderID=OrderDetails.OrderID


code:
1
2
3
4
SELECT Products.ProductName,Orders.OrderID, COUNT(Orders.OrderID) AS AantalOrders
FROM Products,Orders,OrderDetails
WHERE Products.ProductID=OrderDetails.ProductID AND  Orders.OrderID=OrderDetails.OrderID AND AantalOrders > 50
GROUP BY Products.ProductName

  • pjotrk
  • Registratie: Mei 2004
  • Laatst online: 15-07-2025
Voor het selecteren op geaggregeerde kolommen zou je having moeten gebruiken:

zoiets:
SELECT Products.ProductName, COUNT(Orders.OrderID) AS AantalOrders
FROM Products P JOIN product_order O ON (P.ProductID = PO.ProductID) JOIN order O ON (O.OrderID=PO.OrderID)
GROUP BY Products.ProductName HAVING AantalOrders > 50

overigens is een tabelnaam 'order' niet de meest handige naam (Order is ook al een sql functie 'order by'), dus de tabelnaam order zou je dan moeten quoten.

-> `order`

Verwijderd

Topicstarter
pjotrk schreef op 03 november 2004 @ 16:35:
Voor het selecteren op geaggregeerde kolommen zou je having moeten gebruiken:

zoiets:
SELECT Products.ProductName, COUNT(Orders.OrderID) AS AantalOrders
FROM Products P JOIN product_order O ON (P.ProductID = PO.ProductID) JOIN order O ON (O.OrderID=PO.OrderID)
GROUP BY Products.ProductName HAVING AantalOrders > 50

overigens is een tabelnaam 'order' niet de meest handige naam (Order is ook al een sql functie 'order by'), dus de tabelnaam order zou je dan moeten quoten.

-> `order`
ik ga eens kijken, overigens wel humor, ORDER heb ik niet zelf bedacht maar komt uit northwind database die standaard bij access wordt geleverd ..