/ 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
problem med forespørgelsen i databasem
Fra : Allan Schuster Bach


Dato : 01-04-03 23:08

Jeg har en tabel der indeholder vare
eks
Id: 12
Beskrivelse: vare
Pris: 100

En anden table indeholder bud på denne vare (vil altid være større)

id_FK nypris
12 110
12 115
12 117

Min ide var nu at finde vare id 12 og den højste pris som nu er 117.

først finder jeg jeg den størreste pris
select max(nypris) from tabel2 where id_fk = 12

Den sætter jeg sammen med sådan

select * from tabel1 where tabel1.id = 12 and (select max(nypris) from
tabel2 where id_fk = 12) < table.Pris

hvilket giver ingen ting!!!!

Der i mod giver

select * from tabel1 where tabel1.id = 12 and (select max(nypris) from
tabel2 where id_fk = 12) > table.Pris

pris: 100

Hvad gør jeg galt

Allan Bach



 
 
Jens Gyldenkærne Cla~ (02-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 02-04-03 09:28

Allan Schuster Bach skrev:

> Jeg har en tabel der indeholder vare
> eks
> Id: 12
> Beskrivelse: vare
> Pris: 100
>
> En anden table indeholder bud på denne vare (vil altid være
> større)
>
> id_FK nypris
> 12 110
> 12 115
> 12 117
>
> Min ide var nu at finde vare id 12 og den højste pris som nu
> er 117.


Du skal bruge et join. Du har ikke fortalt hvilken database du
bruger, men i MS-databaser (muligvis også i flere) kan du bruge
følgende metoder:

SELECT TOP 1 v.Beskrivelse, v.pris, b.nypris
FROM varer v INNER JOIN bud b
   ON v.id = b.id_FK
WHERE v.ID = 12
AND    b.nypris > v.pris
ORDER BY b.nypris DESC


En alternativ udgave er at bruge GROUP BY:

SELECT v.ID, v.Beskrivelse, v.pris, MAX(b.nypris) as maxpris
FROM varer v INNER JOIN bud b
   ON v.id = b.id_FK
WHERE v.ID = 12
AND    b.nypris > v.pris
GROUP BY v.ID, v.Beskrivelse, v.pris


> Hvad gør jeg galt

Når du skal sammenkæde informationer fra flere tabeller skal du så
godt som altid benytte JOIN. Læs evt. et introduktionshæfte om
databaser - det kan godt svare sig.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma
(rettelser modtages gerne i dk.kultur.sprog)

Allan Schuster Bach (02-04-2003)
Kommentar
Fra : Allan Schuster Bach


Dato : 02-04-03 19:52

> Du skal bruge et join. Du har ikke fortalt hvilken database du
> bruger, men i MS-databaser (muligvis også i flere) kan du bruge
> følgende metoder:

Jeg bruger en MS SQL Server

> SELECT TOP 1 v.Beskrivelse, v.pris, b.nypris
> FROM varer v INNER JOIN bud b
> ON v.id = b.id_FK
> WHERE v.ID = 12
> AND b.nypris > v.pris
> ORDER BY b.nypris DESC

Jeg forsøgte noget ligende i aftes, dog kan jeg ikke huske om jeg have
"order by" og "DESC" med

> En alternativ udgave er at bruge GROUP BY:
>
> SELECT v.ID, v.Beskrivelse, v.pris, MAX(b.nypris) as maxpris
> FROM varer v INNER JOIN bud b
> ON v.id = b.id_FK
> WHERE v.ID = 12
> AND b.nypris > v.pris
> GROUP BY v.ID, v.Beskrivelse, v.pris
>
>
> > Hvad gør jeg galt
>
> Når du skal sammenkæde informationer fra flere tabeller skal du så
> godt som altid benytte JOIN. Læs evt. et introduktionshæfte om
> databaser - det kan godt svare sig.

Selvfølgelig skal man benytte JOIN, klart. Må erkende at jeg nok ikke tænkte
så klart i aftes, som jeg normalt gør!

Men tak for hjælpen

Allan Bach



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

Månedens bedste
Årets bedste
Sidste års bedste