|
| Noget JOIN Fra : Harald |
Dato : 22-11-03 18:13 |
|
Jeg har 2 tabeller:
Tabel1:
IDKode : integer
Navn: string
Adresse: string
Landekode : string
+ en masse andre felter
Tabel2:
IDKode : integer
Ejer : integer
Ankomst : Date
Jeg kører så følgende sql:
SELECT * FROM Tabel2 LEFT JOIN Tabel1 ON Table1.IDKode=Table2.Ejer WHERE
Tabel2.Ankomst>"20031122"
det virker også fint men jeg få alle felter med fra Tabel1 og det vil jeg
gerne undgå pga. hastigheden, jeg har kun brug for Landekode fra Table1?
Mvh
HK
| |
Jimmy (22-11-2003)
| Kommentar Fra : Jimmy |
Dato : 22-11-03 18:40 |
|
"Harald" <news10@-REMOVE-THIS-kroning.dk> wrote in message
news:3fbf991d$0$150$edfadb0f@dread11.news.tele.dk...
> Jeg har 2 tabeller:
>
> Tabel1:
> IDKode : integer
> Navn: string
> Adresse: string
> Landekode : string
> + en masse andre felter
>
> Tabel2:
> IDKode : integer
> Ejer : integer
> Ankomst : Date
>
> Jeg kører så følgende sql:
>
> SELECT * FROM Tabel2 LEFT JOIN Tabel1 ON Table1.IDKode=Table2.Ejer WHERE
> Tabel2.Ankomst>"20031122"
>
> det virker også fint men jeg få alle felter med fra Tabel1 og det vil jeg
> gerne undgå pga. hastigheden, jeg har kun brug for Landekode fra Table1?
Er det så ikke bare
SELECT Landekode ...
Jeg ved ikke hvilken database eller sprog du anvender, men du burde kunne
nøjes med kun at vælge det felt du ønsker.
Mvh
Jimmy
| |
Harald (23-11-2003)
| Kommentar Fra : Harald |
Dato : 23-11-03 00:35 |
|
"Jimmy" <nyhedsgruppe2@get2net.danmark> skrev i en meddelelse
news:bpo72d$654$1@sunsite.dk...
>
> "Harald" <news10@-REMOVE-THIS-kroning.dk> wrote in message
> news:3fbf991d$0$150$edfadb0f@dread11.news.tele.dk...
> > Jeg har 2 tabeller:
> >
> > Tabel1:
> > IDKode : integer
> > Navn: string
> > Adresse: string
> > Landekode : string
> > + en masse andre felter
> >
> > Tabel2:
> > IDKode : integer
> > Ejer : integer
> > Ankomst : Date
> >
> > Jeg kører så følgende sql:
> >
> > SELECT * FROM Tabel2 LEFT JOIN Tabel1 ON Table1.IDKode=Table2.Ejer WHERE
> > Tabel2.Ankomst>"20031122"
> >
> > det virker også fint men jeg få alle felter med fra Tabel1 og det vil
jeg
> > gerne undgå pga. hastigheden, jeg har kun brug for Landekode fra Table1?
>
> Er det så ikke bare
>
> SELECT Landekode ...
>
> Jeg ved ikke hvilken database eller sprog du anvender, men du burde kunne
> nøjes med kun at vælge det felt du ønsker.
Ups, glemte at nævne at det er MySQL 3. Jeg skal kun bruge Landekode fra
Tabel1 men SELECT * er jo Tabel2, så det er vel noget med at Landekode skal
puttes ind efter JOIN Tabel1, det har jeg så prøvet med uden held.
/HK
| |
Jimmy (23-11-2003)
| Kommentar Fra : Jimmy |
Dato : 23-11-03 08:50 |
|
> Ups, glemte at nævne at det er MySQL 3. Jeg skal kun bruge Landekode fra
> Tabel1 men SELECT * er jo Tabel2, så det er vel noget med at Landekode
skal
> puttes ind efter JOIN Tabel1, det har jeg så prøvet med uden held.
Hvad har du forsøgt?
Hvilken fejl får du?
SELECT * er alt fra begge tabeller.
SELECT Landekode er kun fra tabel1, da den kun optræder der.
Hvis du ønsker at specificere det kan du sige SELECT Tabel1.Landekode
Mvh
Jimmy
| |
Harald (23-11-2003)
| Kommentar Fra : Harald |
Dato : 23-11-03 11:41 |
|
"Jimmy" <nyhedsgruppe2@get2net.danmark> skrev i en meddelelse
news:bppor6$4b6$1@sunsite.dk...
> > Ups, glemte at nævne at det er MySQL 3. Jeg skal kun bruge Landekode fra
> > Tabel1 men SELECT * er jo Tabel2, så det er vel noget med at Landekode
> skal
> > puttes ind efter JOIN Tabel1, det har jeg så prøvet med uden held.
>
> Hvad har du forsøgt?
> Hvilken fejl får du?
>
> SELECT * er alt fra begge tabeller.
>
> SELECT Landekode er kun fra tabel1, da den kun optræder der.
>
> Hvis du ønsker at specificere det kan du sige SELECT Tabel1.Landekode
Jeg har prøvet med:
SELECT Tabel2.*, Tabel1.Landekode FROM Tabel2, Tabel1 LEFT JOIN Tabel1 ON
Table1.IDKode=Table2.Ejer WHERE Tabel2.Ankomst>"20031122"
Herfå jeg fejlen: Not unique table/alias: Tabel1
Og denne:
SELECT * FROM Tabel2 LEFT JOIN Tabel1.Landekode ON Table1.IDKode=Table2.Ejer
WHERE Tabel2.Ankomst>"20031122"
Her får jeg som forventet fejlen: Table "Tabel1.Landekode" doesn´t exist.
Jeg har også prøvet:
SELECT Tabel2.*, Tabel1.Landekode FROM Tabel2, Tabel1 WHERE
Table1.IDKode=Table2.Ejer AND Tabel2.Ankomst>"20031122"
Den virker men giver så ikke det ønskede resultat, jeg vil have alle records
fra Tabel2 også selvom der ikke findes en Table1.IDKode=Table2.Ejer og det
kan en JOIN jo give mig.
/HK
| |
Rasmus Oudal Edberg (23-11-2003)
| Kommentar Fra : Rasmus Oudal Edberg |
Dato : 23-11-03 12:48 |
|
"Harald" <news10@-REMOVE-THIS-kroning.dk> writes:
> "Jimmy" <nyhedsgruppe2@get2net.danmark> skrev i en meddelelse
> news:bppor6$4b6$1@sunsite.dk...
>> > Ups, glemte at nævne at det er MySQL 3. Jeg skal kun bruge Landekode fra
>> > Tabel1 men SELECT * er jo Tabel2, så det er vel noget med at Landekode
>> skal
>> > puttes ind efter JOIN Tabel1, det har jeg så prøvet med uden held.
>>
>> Hvad har du forsøgt?
>> Hvilken fejl får du?
>>
>> SELECT * er alt fra begge tabeller.
>>
>> SELECT Landekode er kun fra tabel1, da den kun optræder der.
>>
>> Hvis du ønsker at specificere det kan du sige SELECT Tabel1.Landekode
>
> Jeg har prøvet med:
> SELECT Tabel2.*, Tabel1.Landekode FROM Tabel2, Tabel1 LEFT JOIN Tabel1 ON
> Table1.IDKode=Table2.Ejer WHERE Tabel2.Ankomst>"20031122"
>
> Herfå jeg fejlen: Not unique table/alias: Tabel1
>
> Og denne:
> SELECT * FROM Tabel2 LEFT JOIN Tabel1.Landekode ON Table1.IDKode=Table2.Ejer
> WHERE Tabel2.Ankomst>"20031122"
>
> Her får jeg som forventet fejlen: Table "Tabel1.Landekode" doesn´t exist.
>
> Jeg har også prøvet:
> SELECT Tabel2.*, Tabel1.Landekode FROM Tabel2, Tabel1 WHERE
> Table1.IDKode=Table2.Ejer AND Tabel2.Ankomst>"20031122"
>
> Den virker men giver så ikke det ønskede resultat, jeg vil have alle records
> fra Tabel2 også selvom der ikke findes en Table1.IDKode=Table2.Ejer og det
> kan en JOIN jo give mig.
>
> /HK
Hej,
Det er altid pænest explicit at spørge efter de felter man ønsker, fx.
SELECT Table2.felt1, Table2.felt2, Table2.felt3 .... Table1.Landekode
FROM Table2 JOIN Table1
ON Table2.Ejer = Table1.IDKode
WHERE Table2.Ankomst>"20031122"
Jeg håber at ovenstående virker, jeg er ingen ekspert.
ps. hvis du ikke synes det er rart med så lange sql sætninger i din kode,
kan du jo oprette ovenstående som et view og SELECT * fra det view.
--
Mvh.
Rasmus
| |
Harald (23-11-2003)
| Kommentar Fra : Harald |
Dato : 23-11-03 15:16 |
|
"Rasmus Oudal Edberg" <rasmus@NOSPAMstudentz.dk> skrev i en meddelelse
news:87ad6n9ugv.fsf@freud.studentz.dk...
> "Harald" <news10@-REMOVE-THIS-kroning.dk> writes:
>
> > "Jimmy" <nyhedsgruppe2@get2net.danmark> skrev i en meddelelse
> > news:bppor6$4b6$1@sunsite.dk...
> >> > Ups, glemte at nævne at det er MySQL 3. Jeg skal kun bruge Landekode
fra
> >> > Tabel1 men SELECT * er jo Tabel2, så det er vel noget med at
Landekode
> >> skal
> >> > puttes ind efter JOIN Tabel1, det har jeg så prøvet med uden held.
> >>
> >> Hvad har du forsøgt?
> >> Hvilken fejl får du?
> >>
> >> SELECT * er alt fra begge tabeller.
> >>
> >> SELECT Landekode er kun fra tabel1, da den kun optræder der.
> >>
> >> Hvis du ønsker at specificere det kan du sige SELECT Tabel1.Landekode
> >
> > Jeg har prøvet med:
> > SELECT Tabel2.*, Tabel1.Landekode FROM Tabel2, Tabel1 LEFT JOIN Tabel1
ON
> > Table1.IDKode=Table2.Ejer WHERE Tabel2.Ankomst>"20031122"
> >
> > Herfå jeg fejlen: Not unique table/alias: Tabel1
> >
> > Og denne:
> > SELECT * FROM Tabel2 LEFT JOIN Tabel1.Landekode ON
Table1.IDKode=Table2.Ejer
> > WHERE Tabel2.Ankomst>"20031122"
> >
> > Her får jeg som forventet fejlen: Table "Tabel1.Landekode" doesn´t
exist.
> >
> > Jeg har også prøvet:
> > SELECT Tabel2.*, Tabel1.Landekode FROM Tabel2, Tabel1 WHERE
> > Table1.IDKode=Table2.Ejer AND Tabel2.Ankomst>"20031122"
> >
> > Den virker men giver så ikke det ønskede resultat, jeg vil have alle
records
> > fra Tabel2 også selvom der ikke findes en Table1.IDKode=Table2.Ejer og
det
> > kan en JOIN jo give mig.
> >
> > /HK
>
> Hej,
>
> Det er altid pænest explicit at spørge efter de felter man ønsker, fx.
>
> SELECT Table2.felt1, Table2.felt2, Table2.felt3 .... Table1.Landekode
> FROM Table2 JOIN Table1
> ON Table2.Ejer = Table1.IDKode
> WHERE Table2.Ankomst>"20031122"
>
> Jeg håber at ovenstående virker, jeg er ingen ekspert.
>
> ps. hvis du ikke synes det er rart med så lange sql sætninger i din kode,
> kan du jo oprette ovenstående som et view og SELECT * fra det view.
Jeg havde skrevet:
SELECT Tabel2.*, Tabel1.Landekode FROM Tabel2, Tabel1 LEFT JOIN Tabel1 ON
Table1.IDKode=Table2.Ejer
og fik en fejl, så det eneste jeg skulle var at fjerne Tabel1 efter FROM så
viker det. Jeg takker.
Er der ikke noget med at MySQL 3 ikke understøtter view.
/HK
| |
|
|