|
| sammenkæde flere rækker til felt My Fra : Ryan Kristensen |
Dato : 10-03-08 14:00 |
|
Hej.
Jeg forsøger at lave en database(MySQL) over personer, der skal
sammenkædes med hvilke hold, de er tilmeldt.
Problemet er, at personerne kan tilmeldes mere end ét hold.
Indtil videre har jeg lavet to databaser:
Databasen "personer" med to felter: navn og hold_id
Databasen "hold" med hold_id og holdtitel
Som jeg så kan sammenkæde (join) med feltet hold_id
Dette kan jeg bare ikke få til at give mulighed for at tilknytte flere
hold pr. person.
Er der en mulighed for at gøre dette?
--
Ryan Kristensen
| |
Gert Krabsen (10-03-2008)
| Kommentar Fra : Gert Krabsen |
Dato : 10-03-08 14:17 |
|
Ryan Kristensen skrev:
> Hej.
>
> Jeg forsøger at lave en database(MySQL) over personer, der skal
> sammenkædes med hvilke hold, de er tilmeldt.
> Problemet er, at personerne kan tilmeldes mere end ét hold.
> Indtil videre har jeg lavet to databaser:
> Databasen "personer" med to felter: navn og hold_id
> Databasen "hold" med hold_id og holdtitel
> Som jeg så kan sammenkæde (join) med feltet hold_id
> Dette kan jeg bare ikke få til at give mulighed for at tilknytte flere
> hold pr. person.
>
> Er der en mulighed for at gøre dette?
Du har brug for en mellem-tabel:
tabel person:
-------------
person_id autoincrement
personnavn long
osv.
tabel hold:
-----------
hold_id autoincrement
holdnavn long
osv.
tabel person_i_hold:
--------------------
person_i_hold_id autoincrement
person_id long
hold_id long
| |
Ryan Kristensen (10-03-2008)
| Kommentar Fra : Ryan Kristensen |
Dato : 10-03-08 14:50 |
|
On Mon, 10 Mar 2008 14:16:56 +0100, Gert Krabsen
<fjernkrabsen@fjernkrabsenfjern.dk> wrote:
>> Dette kan jeg bare ikke få til at give mulighed for at tilknytte flere
>> hold pr. person.
>> Er der en mulighed for at gøre dette?
>
>
> Du har brug for en mellem-tabel:
Ok, det giver jo meget god mening. Tusind tak for hintet.
Jeg har nu prøvet at sætte en sql-sætning sammen, så jeg f.eks. kan smide
"hold_1" ind, og få en liste ud hvor jeg kan se hvilke andre hold, der er
personer fra på dette hold.
Er der en pænere måde, at skrive det på end dette:
SELECT holdnavn FROM hold
WHERE hold_id = (SELECT hold_id
FROM person_i_hold
WHERE person_id = (SELECT person_id
FROM person_i_hold
WHERE hold_id =(SELECT hold_id
FROM hold
WHERE holdnavn='hold_1'))
GROUP BY hold_id)
--
Ryan Kristensen
| |
Leif Neland (10-03-2008)
| Kommentar Fra : Leif Neland |
Dato : 10-03-08 22:29 |
|
Ryan Kristensen skrev:
> Jeg har nu prøvet at sætte en sql-sætning sammen, så jeg f.eks. kan
> smide "hold_1" ind, og få en liste ud hvor jeg kan se hvilke andre hold,
> der er personer fra på dette hold.
>
> Er der en pænere måde, at skrive det på end dette:
>
....
select distinct holdnavn from hold,
person_i_hold dette,
person_i_hold andet
where hold.hold_id=andet.hold_id
and andet.person_id=dette.person_id
and dette.hold_id='hold_1';
Bemærk at person_i_hold bruges to gange, med alias hhv 'dette' og 'andet'.
Leif
| |
Ryan Kristensen (11-03-2008)
| Kommentar Fra : Ryan Kristensen |
Dato : 11-03-08 20:59 |
|
On Mon, 10 Mar 2008 22:29:10 +0100, Leif Neland <leif@neland.dk> wrote:
>> Er der en pænere måde, at skrive det på end dette:
>>
> ...
>
> select distinct holdnavn from hold,
> person_i_hold dette,
> person_i_hold andet
> where hold.hold_id=andet.hold_id
> and andet.person_id=dette.person_id
> and dette.hold_id='hold_1';
Det virker perfekt. Mange tak for hjælpen.
--
Ryan Kristensen
| |
|
|