/ 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
SELECT i mySQL imellem flere tabeller uden~
Fra : Jesper Stocholm


Dato : 05-03-02 11:49

Jeg har et par tabeller, som jeg gerne vil udtrække noget data fra. Data
ser nogenlunde således ud:

Table 1 T1

|Name | Price | Size | Id |
---------------------------
N1 P1 L 1
N2 P2 L 2
N3 P2 S 3


Table 2 T2

|Id | City |
------------
1 C1
1 C2
2 C1
1 C4
2 C4

Der er en en-mange relation imellem de to tabeller på ID-kolonnerne. En
række i T1 kan have relationer til en eller flere rækker i T2

Jeg vil gerne kunne udtrække data, så jeg får dem således:

T1.Name,T1.Price,T1.Size,T1.Id,[de relevante Citys i T2]

Fx ønsker jeg for N1 følgende resultat:

| Name | Price | Size | Id | Cities |
-------------------------------------
N1 P1 L 1 C1,C2,C4

Jeg kan ikke greje hvordan jeg skal gøre dette - uden at anvende
subselects. Jeg har kigget på de sider på bla. mySQL.com, hvor de snakker
om at omskrive subselects til joins, men jeg kan ikke få det til at
virke.

Kan i hjælpe mig ?

pft


--
Jesper Stocholm
http://stocholm.dk

 
 
Peter Brodersen (05-03-2002)
Kommentar
Fra : Peter Brodersen


Dato : 05-03-02 13:46

On Tue, 5 Mar 2002 10:49:27 +0000 (UTC), Jesper Stocholm
<spam200203@stocholm.dk> wrote:

>Jeg kan ikke greje hvordan jeg skal gøre dette - uden at anvende
>subselects. Jeg har kigget på de sider på bla. mySQL.com, hvor de snakker
>om at omskrive subselects til joins, men jeg kan ikke få det til at
>virke.

Såvidt, jeg er nået frem til, er det ikke muligt. Løsningen ville være
en form for CONCAT_WS, der kunne fungere på tværs af rows, evt. i
forbindelse med en GROUP BY. Det vil altså blot ikke virke - såvidt,
jeg kan se, er det kun talfunktioner som fx MIN(), MAX(), AVG(),
COUNT(), man kan bruge til noget på en relevant kolonne ifbm. en GROUP
BY.

Jeg kunne meget vel selv trænge til en tilsvarende funktion, men løser
typisk problematikken vha. det overlæggende sprog, der kalder
mysql-funktionen, der så sørger for et passende output. Evt. ved en
almindelig LEFT JOIN på Table 2, hvor jeg så blot holder øje med om fx
"Name" skifter mellem to rows - eller (hvis det virkelig ikke kan
undgås) en query for hver row i Table 1.
--
- Peter Brodersen

Kevin Steffer (07-03-2002)
Kommentar
Fra : Kevin Steffer


Dato : 07-03-02 17:51

Jesper Stocholm wrote:

> Jeg har et par tabeller, som jeg gerne vil udtrække noget data fra. Data
> ser nogenlunde således ud:
>
> Table 1 T1
>
> |Name | Price | Size | Id |
> ---------------------------
> N1 P1 L 1
> N2 P2 L 2
> N3 P2 S 3
>
>
> Table 2 T2
>
> |Id | City |
> ------------
> 1 C1
> 1 C2
> 2 C1
> 1 C4
> 2 C4
>
> Der er en en-mange relation imellem de to tabeller på ID-kolonnerne. En
> række i T1 kan have relationer til en eller flere rækker i T2
>
> Jeg vil gerne kunne udtrække data, så jeg får dem således:
>
> T1.Name,T1.Price,T1.Size,T1.Id,[de relevante Citys i T2]
>
> Fx ønsker jeg for N1 følgende resultat:
>
> | Name | Price | Size | Id | Cities |
> -------------------------------------
> N1 P1 L 1 C1,C2,C4
>
> Jeg kan ikke greje hvordan jeg skal gøre dette - uden at anvende
> subselects. Jeg har kigget på de sider på bla. mySQL.com, hvor de snakker
> om at omskrive subselects til joins, men jeg kan ikke få det til at
> virke.
>
> Kan i hjælpe mig ?
>
> pft
>
>

Hej Jesper,

Er det sådan du vil ha' det ?

SELECT T1.*, T2.Cities FROM T1,T2 WHERE T1.Id = T2.Id ORDER BY T1.Name

-Kevin



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

Månedens bedste
Årets bedste
Sidste års bedste