webForumDet fria alternativet

JOIN-problem

Databaser & SQLur Databashanterare & SQL

6 svar · 185 visningar · startad av cyprys

cyprysMedlem sedan dec. 20003 563 inlägg
#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

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Vad är problemet?

cyprysMedlem 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

LarsGMedlem 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å

K@llenMedlem 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.

cyprysMedlem 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. :)

cyprysMedlem sedan dec. 20003 563 inlägg
#7

Jomenvisst funkade det bra.. :bire

131 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)