|
| 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
| |
|
|