webForumDet fria alternativet
Logga in / Bli medlem

JOIN-problem

Databaser & SQL

6 svar · 185 visningar · startad av cyprys

Medlem sedan dec. 20003 563 inlägg
Trådstart#1

Har några tabeller fast det är bara två stycken av dem som krånglar nu.
Jag vill få ut det högsta värdet som är bjudet på ett objekt. Bjudningarna finns i en tabell och alla objekten i en annan. tabellen är grupperad efter objekten som skall presentera maximalvärdet i tabellen bidding.

SELECT t1.objectid, t1.pris, t2.bid, t3.brand, t3.model, t3.modelvariant, t4.marke
FROM auctionobjects t1 LEFT JOIN bidding t2 ON t1.id = t2.auctionobjectid, objects t3, brands t4
WHERE t1.objectid = t3.id AND t3.brand = t4.id AND t1.auctionid = 2 AND t2.bid = (SELECT max(t5.bid) FROM bidding t5 WHERE t1.id = t5.auctionobjectid ;) 
GROUP BY 1 ;

En lite nerbantad och relevanta delar

SQL &= "SELECT t1.objectid, t1.pris, t2.bid "
        SQL &= "FROM auctionobjects t1 INNER JOIN bidding t2 ON t1.id = t2.auctionobjectid "
        SQL &= "WHERE t1.auctionid = " & auctionID & " AND t2.bid = (SELECT max(t5.bid) FROM bidding t5 WHERE t1.id = t5.auctionobjectid )  "
        SQL &= "GROUP BY 1 "

Tycker jag har följt dokumentationens syntax på https://www.mysql.com

Medlem sedan dec. 200012 464 inlägg
#2

Vad är problemet?

Medlem sedan dec. 20003 563 inlägg
#3

Just ja.. Syntax error. Den skriker inte ifrån sig någonting.
Tar jag däremot bort min "AND t2.bid = (SELECT.....)" så funkar det fint förutom att t2.bid är det första budet som kommer i den tabellen (I just detta fall det lägsta).

Detta felmess i ASP.NET: No error information available: DB_E_ERRORSINCOMMAND(0x80040E14).

I MySQL CC säger den att syntaxen är fel dessutom och hänvisar till dokumentationen

dokumentation skrev:

In SQL-99 (and MySQL Version 4.1 or greater), I'd do it with a subquery like this:

SELECT article, dealer, price
FROM shop s1
WHERE price=(SELECT MAX(s2.price)
FROM shop s2
WHERE s1.article = s2.article);

/r Mycket redigera blev det

Medlem sedan dec. 200012 464 inlägg
#4

Använder du version 4.1 av Mysql? Det är bara i den (alfatest-) versionen som det finns stöd för subselect.

Syntaxen är det inget fel på

Medlem sedan mars 20032 667 inlägg
#5

Jag tror inte du kan göra en subselect om du inte har mysql-version 4 eller nyare.

Medlem sedan dec. 20003 563 inlägg
#6

Det var där det låg, antagligen.
Körde på den rekommenderade 4.0.1-versionen.
Jag tankar så blir jag säkert nöjd sen. :)

Medlem sedan dec. 20003 563 inlägg
#7

Jomenvisst funkade det bra.. :bire

257 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)