cyprysMedlem sedan dec. 20003 563 inläggEn liten fortsättning på föregående tråd JOIN-Problem
Använder nu denna kod för att fylla en datagrid och den funkar alldeles utmärkt.
SQL &= "SELECT t1.objectid, t1.pris, t2.bid, t3.brand, t3.model, t3.modelvariant, t3.regyear, t4.marke "
SQL &= "FROM auctionobjects t1 LEFT JOIN bidding t2 ON t1.id = t2.auctionobjectid, objects t3, brands t4 "
SQL &= "WHERE t1.objectid = t3.id AND t3.brand = t4.id AND t1.auctionid = " & auctionID & " AND (t2.bid = (SELECT max(t5.bid) FROM bidding t5 WHERE t1.id = t5.auctionobjectid) OR t2.bid IS NULL) "
SQL &= "ORDER BY `marke`"
Nu skulle jag vilja med samma villkor få fram 2 kolumner.
En kolumn med samtliga representerade märken "t4.marke" samt hur många gånger de förekommer.
I tabellen auctionobjects finns kolumnen auctionid
I tabellen auctionobjects finns samtliga objectid och vi ska välja de som har auctionid = 2 t.ex. (dynamiskt i funktionen)
I tabellen objects finns id och brand. auctionobjectid = objects.id.
I tabellen brands finns id och marke där är objects.brand = brands.id.
Jag tappar tankarna helt när jag funderar på detta, har inget riktigt bra system för SQL-frågor i skallen.
AaasahMedlem sedan mars 20034 471 inlägg Re: GROUP BY 1 och räkna ihop antalet
Jag tappar tyvärr kollen lite när jag läser din beskrivning men som ett första försök.
Select det som ska ut
From auctionobjects A, objects O, brands B
Where A.auctionid = 2 and A.objectid = O.id and
B. auctionobjectid = O.id and O.brand = B.id;
Om du har fler villkor slänger du på dem med flera and. Men nu bör dina tabeller vara korrekt "ihopsatta" tror jag (om jag fattade problemet rätt).
Det du ska tänka på är att helt enkelt "tala om" för databasen, via SQL, vilka kolumner som innehåller "samma" värden. DU vet att när objectid i auctionobjects är lika med id i objects så behandlas samma objekt. Det gäller bara att tala om att du just är intresserad av all info som behandlar samma objekt.
cyprysMedlem sedan dec. 20003 563 inläggJag har så här mycket nu men jag lyckas inte få ut den andra kolumnen. Den som räknar ut hur många av varje märke som finns tillgängligt
SQL &= "SELECT t2.brand as marke1, t3.marke as marke2 "
SQL &= "FROM auctionobjects t1 INNER JOIN objects t2 ON t1.objectid = t2.id, brands t3 "
SQL &= "WHERE t1.auctionid = " & auctionID & " AND t3.id = t2.brand "
SQL &= "GROUP BY 1 "
AaasahMedlem sedan mars 20034 471 inlägg
cyprys skrev:
Jag har så här mycket nu men jag lyckas inte få ut den andra kolumnen. Den som räknar ut hur många av varje märke som finns tillgängligt...
Var finns denna info? Alltså jag menar hur ser innehållet ut? Finns det en kolumn som talar om att marke1 finns i 40 ex eller finns det 40 rader med marke1 nånstans?
cyprysMedlem sedan dec. 20003 563 inläggAuctionObjects
' Här kan det ligga en massa olika ObjectID som har samma AuctionID
' Varje ObjectID refererar till ID i nästa tabell
_________________
AuctionID | ObjectID
Objects
' Varje post har ett värde i kolumnen Brand
' Ex. Om vi från förra tabellen skulle få ut 10st olika ObjectID och referar till denna tabell. 5 av dessa har samma objects.brand-värde. Detta skulle jag vilja summera för varje GROUP BY
ID | brand
AaasahMedlem sedan mars 20034 471 inlägg Om du vill återanvända resultaten i din ursprungliga fråga måste du döpa den tabellen till något, mha create view.
Kan du ge ett exempel med påhittat tabellinnehåll, jag hängde inte med i förklaringen, tyvärr.