/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
sub-queries eller mangel på samme
Fra : Mikael Hansen


Dato : 11-03-01 18:33

Hejsa

Jeg har brug for at lave en query lidt som denne på MySQL:
select username, saldo from main where username IN (select DISTINCT
username from main) ORDER BY clock DESC LIMIT 1;

Men den fungerer ikke. Jeg kan se udfra mysql manualen at MySQL ikke
understøtte sub-queries, men at querien i de flest tilfælde kan skrives
om. Spørgsmålet er nu hvordan?

Jeg ønsker at trække username, saldo ud for et hvert username der findes i
tabellen og slutteligt sortere resultatet så dem med mindst saldo
kommer til sidst.

Dette er tabellen:
+------------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-----------+------+-----+---------+-------+
| creator_ip | char(15) | YES | | NULL | |
| username | char(8) | YES | | NULL | |
| text | char(255) | YES | | NULL | |
| clock | int(11) | YES | | NULL | |
| amount | int(11) | YES | | NULL | |
| saldo | int(11) | YES | | NULL | |
| creator | char(8) | YES | | NULL | |
+------------+-----------+------+-----+---------+-------+


MVH og på forhånd tak
   Mikael Hansen

"We are Microsoft. You will be assimilated.
   Resistance is Futile."






 
 
Kristian Damm Jensen (12-03-2001)
Kommentar
Fra : Kristian Damm Jensen


Dato : 12-03-01 15:27

Mikael Hansen wrote:
>
> Hejsa
>
> Jeg har brug for at lave en query lidt som denne på MySQL:
> select username, saldo from main where username IN (select DISTINCT
> username from main) ORDER BY clock DESC LIMIT 1;
>
> Men den fungerer ikke. Jeg kan se udfra mysql manualen at MySQL ikke
> understøtte sub-queries, men at querien i de flest tilfælde kan skrives
> om. Spørgsmålet er nu hvordan?

select m1.username, m2.saldo
from main m1
, main m2
where m1.username = m2.username
ORDER BY clock DESC LIMIT 1;

(Distinct er overflødig, da du alligevel kun udvælger én.)

> Jeg ønsker at trække username, saldo ud for et hvert username der findes i
> tabellen og slutteligt sortere resultatet så dem med mindst saldo
> kommer til sidst.
>
> Dette er tabellen:
> +------------+-----------+------+-----+---------+-------+
> | Field | Type | Null | Key | Default | Extra |
> +------------+-----------+------+-----+---------+-------+
> | creator_ip | char(15) | YES | | NULL | |
> | username | char(8) | YES | | NULL | |
> | text | char(255) | YES | | NULL | |
> | clock | int(11) | YES | | NULL | |
> | amount | int(11) | YES | | NULL | |
> | saldo | int(11) | YES | | NULL | |
> | creator | char(8) | YES | | NULL | |
> +------------+-----------+------+-----+---------+-------+

Det har ikke meget med ovenstående eksempel at gøre:

select username
, saldo
from tabel
order be saldo asc


--
Kristian Damm Jensen | Feed the hungry. Go to
kristian-damm.jensen@capgemini.dk | http://www.thehungersite.com


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste