Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Apr 2010

Behöver lite hjälp med SQL-kod

Sitter med MS SSMS och Northwind och labbar lite.
Jag undrar om det går att Joina två tabeller samtidigt som jag vill ha det senaste (högsta) OrderID för varje kund.

Jag vill alltså inte få ut någon kund fler än en gång. Och jag vill ha det största ordernumret för varje kund.

Så här långt har jag kommit just nu, och jag inser att det saknas några rader

SELECT ORDERID, COMPANYNAME, City FROM ORDERS LEFT JOIN CUSTOMERS ON Customers.Customerid = orders.Customerid;

Spontant tänker jag att det handlar om att välja ut rader, men hur?

2500K - 16GB - 1TB - 1060

Trädvy Permalänk
Medlem
Plats
SweClockers forum
Registrerad
Aug 2012

Nu spelar jag på bortaplan, men kan inte SELECT MAX(orderId), ... FROM ... GROUP BY orderId fungera?

EDIT: GROUP BY customerId ska det givetvis vara
(insert dålig bortförklaring här)

Guide: Roota din HTC - BB-Kod-knappar på Prisjakt

              Min burk - Kvävekyld till 80%
8700K@stock
1070 Ti@stock

Ibland har jag fel, men då är det någon annans fel.

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Apr 2010

@LemonIllusion:
Ser väl logiskt ut. Ska prova lite, tack!

2500K - 16GB - 1TB - 1060

Trädvy Permalänk
Medlem
Plats
Sundsvall
Registrerad
Jan 2011
Skrivet av LemonIllusion:

Nu spelar jag på bortaplan, men kan inte SELECT MAX(orderId), ... FROM ... GROUP BY orderId fungera?

Tror du får köra GROUP BY Customerid, men annars tycker jag också detta borde fungera!

Trädvy Permalänk
Medlem
Plats
SweClockers forum
Registrerad
Aug 2012
Skrivet av Chimo:

Tror du får köra GROUP BY Customerid, men annars tycker jag också detta borde fungera!

Haha ja det låter ju betydligt smartare. Annars får man bra tråkiga svar. Tur någon läser vad man menar istället för vad man skriver.

Guide: Roota din HTC - BB-Kod-knappar på Prisjakt

              Min burk - Kvävekyld till 80%
8700K@stock
1070 Ti@stock

Ibland har jag fel, men då är det någon annans fel.

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Apr 2010

Får det inte att funka riktigt. Testar jag med endast OrderID så funkar det, men jag vill även göra kopplingen så att jag kan få ut CompanyName.

Testade detta men min kunskap om hur syntaxen fungerar brister en del.

SELECT Max(OrderID), CompanyName FROM Orders GROUP BY OrderID LEFT JOIN CUSTOMERS ON Customers.Customerid = orders.Customerid;

2500K - 16GB - 1TB - 1060

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Apr 2010

@LemonIllusion:
@Chimo:

Tack ska ni ha, jag fick det att funka nu

Så här blev det:

SELECT Max(OrderID), CompanyNAme FROM Orders LEFT JOIN Customers ON Orders.CustomerID = Customers.CustomerID GROUP BY CompanyNAme

2500K - 16GB - 1TB - 1060

Trädvy Permalänk
Medlem
Plats
SweClockers forum
Registrerad
Aug 2012
Skrivet av smkr:

@LemonIllusion:
@Chimo:

Tack ska ni ha, jag fick det att funka nu

Så här blev det:

SELECT Max(OrderID), CompanyNAme FROM Orders LEFT JOIN Customers ON Orders.CustomerID = Customers.CustomerID GROUP BY CompanyNAme

Det där kommer bara fungera så länge CompanyName är unik. Gör som jag och @Chimo föreslog och gruppera på CustomerID istället.

http://sqlfiddle.com/#!9/6e8ff3/1/0

Guide: Roota din HTC - BB-Kod-knappar på Prisjakt

              Min burk - Kvävekyld till 80%
8700K@stock
1070 Ti@stock

Ibland har jag fel, men då är det någon annans fel.