ďťż
 
Relacja wiele do wielu ďťż
 
Relacja wiele do wielu
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Relacja wiele do wielu



TButton - 29-09-2007 00:00
Czy można to zrobić jakoś sprytniej ?
Chodzi mi o przedstawienie zależności pomiędzy Nazwiskami a Imionami.

Rozwiązanie oparte na dodaniu do jednej z tabeli tylu kolumn ile jest
wierszy w drugiej tabeli odrzucamy :D

Tabele:

NAZWISKA
--------
ID integer not null primary key
NAZWISKO Varchar(200)

IMIONA
--------
ID integer not null primary key
IMIE varchar(200)

NAZWISKA_IMIONA
----------------
FK_IMIE integer
FK_NAZW integer
ILOŚĆ integer

Sposób prezentacji :
| Adamowicz | Bryndal | Cedrak | .......|Zytek
-------------|----------------------------------------
Ala | 23 | 21 | 34 | | 333
Anastazja | 123 | 121 | 1233 | | 32
Brodka
Celina
...
...

SELECT IMIE,
(select ILOŚĆ FROM NAZWISKA_IMIONA WHERE FK_IMIE = I.ID AND FK_NAZW= 1)
AS Adamowicz,
(select ILOŚĆ FROM NAZWISKA_IMIONA WHERE FK_IMIE = I.ID AND FK_NAZW= 2)
AS Bryndal
....

FROM IMIONA I
ORDER BY IMIE





=?ISO-8859-2?Q?Cezary_Gr=B1dys?= - 29-09-2007 00:00

  TButton napisał(a):

>
> Sposób prezentacji :
> | Adamowicz | Bryndal | Cedrak | .......|Zytek
> -------------|----------------------------------------
> Ala | 23 | 21 | 34 | | 333
> Anastazja | 123 | 121 | 1233 | | 32
> Brodka
> Celina
> ...
> ...
>
>
> SELECT IMIE,
> (select ILOŚĆ FROM NAZWISKA_IMIONA WHERE FK_IMIE = I.ID AND FK_NAZW = 1)
> AS Adamowicz,
> (select ILOŚĆ FROM NAZWISKA_IMIONA WHERE FK_IMIE = I.ID AND FK_NAZW = 2)
> AS Bryndal
> ....

Tak to na pewno nie. Piszesz w select 'AS Adamowicz' , a to 'Adamowicz'
powinno być raczej zwracane przez zapytanie. Nazwisk może być tysiące.
Może lepiej zrobić taki format:

Ala | Adamowicz | 23
Ala | Bryndal | 21
......

A potem to sformatować perlem czy jakoś inaczej.

Pozdrawiam

--

Cezary Grądys <czarek.gradys@cartalia.com>




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 29-09-2007 00:00

  TButton wrote:
> Czy można to zrobić jakoś sprytniej ?
> Chodzi mi o przedstawienie zależności pomiędzy Nazwiskami a Imionami.
>
> Rozwiązanie oparte na dodaniu do jednej z tabeli tylu kolumn ile jest
> wierszy w drugiej tabeli odrzucamy :D
>
> Tabele:
>
> NAZWISKA
> --------
> ID integer not null primary key
> NAZWISKO Varchar(200)
>
>
> IMIONA
> --------
> ID integer not null primary key
> IMIE varchar(200)
>
>
> NAZWISKA_IMIONA
> ----------------
> FK_IMIE integer
> FK_NAZW integer
> ILOŚĆ integer
>
>
> Sposób prezentacji :
> | Adamowicz | Bryndal | Cedrak | .......|Zytek
> -------------|----------------------------------------
> Ala | 23 | 21 | 34 | | 333
> Anastazja | 123 | 121 | 1233 | | 32
> Brodka
> Celina
> ...
> ...
>
>
> SELECT IMIE,
> (select ILOŚĆ FROM NAZWISKA_IMIONA WHERE FK_IMIE = I.ID AND FK_NAZW = 1)
> AS Adamowicz,
> (select ILOŚĆ FROM NAZWISKA_IMIONA WHERE FK_IMIE = I.ID AND FK_NAZW = 2)
> AS Bryndal
> ....
>
> FROM IMIONA I
> ORDER BY IMIE

To zależy od bazy, ale w większości to jest jedyny sposób. Polecam jedna takie zapytanie generować
procedurą, po co się męczyć. :)

--
P.M.




Wiktor Zychla - 29-09-2007 00:00

  > Czy można to zrobić jakoś sprytniej ?

tak, wykorzystać jakąkolwiek bazę analityczną OLAP (w ostateczności może być
kostka statyczna) i zadać do niej zapytanie w języku MDX:

select NAZWISKA.NAZWISKO on ROWS,
IMIONA.IMIE on COLUMNS FROM kostka
WHERE ILOSC;

gdzie Nazwiska i Imiona to wymiary a Ilosc to miara.

dalej już radź sobie sam.

Wiktor Zychla
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    =?iso-8859-2?q?Relacje_uwzgl=EAdniaj=B1ce_czas_(jak=3F)?= =?iso-8859-2?q?Jak_si=EA_robi_insert_do_tabel_z_relacj=B1_1:1 ?= [MySQL] Jak wybrac wiele elementow powiazanych z jednym elementem innej tablicy? Lista =?ISO-8859-2?Q?uporz=B1dkowana?= w relacji [MySQL 4.1] relacja 1:n jako tekst oddzielony przecinkami Czy stosuje sie relacje bez wymuszania wiezow integralnosci? [TEORIA BD] Wyznaczanie kluczy relacji . [MySql] pytanie o relacje, JOIN [MS sql2005] relacje - problem =?ISO-8859-2?Q?narz=EAdzie_-_poprawki_typo?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nocnerozmowy.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com