Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> dziedziczenie w sql
misty
post
Post #1





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

Ostrzeżenie: (0%)
-----


witam mam maly problem (albo czegos do konca nie rozumiem).

powiedzmy ze mamy tabele:
1sza:
# create table test (test_id serial primary key not null, test char(10) not null, test2 char(10) not null);

i 2ga ktora od niej dziedziczy:
# create table aa (aa_id serial primary key not null, ulubione char(10)) inherits (test);


w tym momencie do mojej drugiej tableli, tj. aa zostana przypisane kolumny z 1szej, tj. z test

test_id | test | test2 | aa_id | ulubione
---------+------+-------+-------+----------
(0 rows)

w tabeli aa trzymam 'ulubione' pozycje z tableli test. powiedzmy ze do obu tabel wstawie jakies przykladowe dane:

test:

test_id | test | test2
---------+------------+------------
1 | aa | bb
2 | cc | dd
3 | ee | ff


aa:

test_id | test | test2 | aa_id | ulubione
---------+------------+------------+-------+------------
2 | cc | dd | 1 | zz


gdy wydam komende:
# select * from only test;
spodziewalam sie otrzymac tylko te kolumny ktore wystepuja w test (czyli poza ta ktora jest rowniez w aa), jednak otrzymuje wszystkie, tj:
test_id | test | test2
---------+------------+------------
1 | aa | bb
2 | cc | dd
3 | ee | ff
(3 rows)

ktos moglby naprowadzic mnie na prawidlowy zapis tudziez prawidlowy tok myslenia?
pzdr!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Troche mieszasz,
Cytat
NIE POWINNO BYC 3CIEJ KOLUMNY GDYZ JEST ONA WSPOLNA DLA RODZICA I DZIECKA..

Trzeci wiersz (rekord)? Ten z 'ccCC'?

Z tego co zauwazylem (dziedziczeniem w PG zajmuje sie od przeczytania tego posta (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) )
to
*
  1. SELECT * FROM ONLY rodzic
-- wyswietli rekordy dodawane bezposrednio do tabeli rodzic czyli bez dzieci
*
  1. SELECT FROM rodzic
wyswietli rodzicow i dzieci, bo dzieci SA rodzicami (hiearchia dziedziczenia; nie majaca nic wspolnego z relacjami w rodzinie, po prostu nadklasa i podklasa)
* select z dzieci jest oczywisty


Cytat
Z TEGO CO ROZUMUJE, NIE POWINNO BYC 3CIEJ wiersza GDYZ JEST ONA WSPOLNA DLA RODZICA I DZIECKA..


Nie, powinna sie tam znalezc. Jest i rodzic i dziecko (byly dwa inserty do rodzica i do dziecka) z takimi samymi danymi. Wiec ONLY wyswietli rodzica, a bez ONLY i rodzic i dziecko z takimi samymi danymi sie pojawia

Kod
SELECT * FROM rodzic;
rodzic_id;rodzic;rodzic2
1;aa      ;AA        
2;bb      ;BB        
3;cc      ;CC         // troche to pokrecone -- bo mamu dwa rekordy z tym samym PK :) musze jeszcze o tym poczytac
5;dd      ;DD      
3;cc      ;CC        //


Kod
SELECT * FROM ONLY rodzic;
rodzic_id;rodzic;rodzic2
1;aa      ;AA        
2;bb      ;BB        
3;cc      ;CC


Kod
SELECT * FROM dziecko;
rodzic_id;rodzic;rodzic2;dziecko_id;ulubione
5;dd      ;DD      ;2;44        
3;cc      ;CC      ;3;dziecko



PS. co do uzywania konsoli -- przeciez to zbedny hardcore, poza tym te nieczytelne wydruki z potwierdzeniami polecen :/
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.10.2025 - 14:42