SQL är svårt att förstå för mig. Därför behöver jag lite hjälp med ett problem som jag har.
Jag har en tabell Products med ID och Name. Vidare har jag en tabell Bids med ID, ProductID, UserID, Bid.
Products innehåller produkterna man kan bjuda på och Bids innehåller buden. Hur kan jag plocka ut samtliga produkter med eventuellt bud och samtidigt få maxbudet?
Denna SQL-sats ska alltså även filtrera ut alla bud under maxbudet.
SELECT Products.Name, Products.ID, Bids.Bid
FROM (Products LEFT OUTER JOIN
Bids ON Products.ID = Bids.ProductID)
name kallar jag för något annat så det är inget problem.
Med lägga till sist menar jag:
select p.name, p.id, max(bid) as maxbid from products as p
left outer join bids as b on b.productid = p.id
group by p.id, p.name
Möjligt att det går (på något udda vänster) att skriva om din innerjoin (som det är du skrivit), men jag kan det inte i alla fall (har inte försökt iof).
Möjligt att det går (på något udda vänster) att skriva om din innerjoin (som det är du skrivit), men jag kan det inte i alla fall (har inte försökt iof).
Att Mysql tillåter att man inte anger alla icke-aggregerade kolumner i group by är inget att skryta med. Tvärtom så innebär det att man inte kan förutsäga vilket data man får.
270 ms totalt · 3 externa anrop · v20260731065814-full.265f3fdd