![]() |
![]() |
![]()
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! |
|
|
![]() |
![]()
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%) ![]() ![]() |
Postgresql? czy jakas inna baza -- to bede wiedzial gdzie przeniesc.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
postgres..
wrzucilam nie tu? bylo napisane ze dla poczatkujacych.. a z postgresem poczatkuje.. |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Tja, i zajmujesz sie takimi zupelnie noobowskimi zagadnieniami jak dziedziczenie tabel? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Przenosze |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
dobra przenos, tylko nie usuwaj tematu;) poprawie sie na przyszlosc;)
pzdr! ps. to jak ktos wie co z tym dziedziczeniem? |
|
|
![]()
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Sprawdzilem to na pg 8.1 (i innych danych, 3ch rodzicow + dziecko z innym ID rodzica) i jest OK.
ONLY wyswietla TYLKO rodzicow (tabele test -- zmien prosze nazwy tabel i pol, bo ciezko mi rozroznic, co jest co) Tylko ze u siebie masz: Kod test: test_id | test | test2 ---------+------------+------------ 1 | aa | bb 2 | cc | dd -- TO 3 | ee | ff Kod test_id | test | test2 | aa_id | ulubione ---------+------------+------------+-------+------------ 2 | cc | dd | 1 | zz -- tu masz INNY rekord z takimi samymi danymi 'cc', 'dd' i w SELECT * FROM ONLY test pokazuje sie rekord z rodzica (test) a nie (dziecka) bez ONLY oba sie pojawia. -------- backup moich tabel: Kod -- -- PostgreSQL database dump -- -- Started on 2007-01-02 18:48:37 CET SET client_encoding = 'UTF8'; SET check_function_bodies = false; SET client_min_messages = warning; SET search_path = public, pg_catalog; SET default_tablespace = ''; SET default_with_oids = false; -- -- TOC entry 1189 (class 1259 OID 45755) -- Dependencies: 4 -- Name: rodzic; Type: TABLE; Schema: public; Owner: mike; Tablespace: -- CREATE TABLE rodzic ( rodzic_id serial NOT NULL, rodzic character(10) NOT NULL, rodzic2 character(10) NOT NULL ); -- -- TOC entry 1518 (class 0 OID 0) -- Dependencies: 1188 -- Name: rodzic_rodzic_id_seq; Type: SEQUENCE SET; Schema: public; Owner: mike -- SELECT pg_catalog.setval(pg_catalog.pg_get_serial_sequence('rodzic', 'rodzic_id'), 5, true); -- -- TOC entry 1516 (class 0 OID 45755) -- Dependencies: 1189 -- Data for Name: rodzic; Type: TABLE DATA; Schema: public; Owner: mike -- INSERT INTO rodzic (rodzic_id, rodzic, rodzic2) VALUES (1, 'aa ', 'AA '); INSERT INTO rodzic (rodzic_id, rodzic, rodzic2) VALUES (2, 'bb ', 'BB '); INSERT INTO rodzic (rodzic_id, rodzic, rodzic2) VALUES (3, 'cc ', 'CC '); -- -- TOC entry 1515 (class 2606 OID 45759) -- Dependencies: 1189 1189 -- Name: rodzic_pkey; Type: CONSTRAINT; Schema: public; Owner: mike; Tablespace: -- ALTER TABLE ONLY rodzic ADD CONSTRAINT rodzic_pkey PRIMARY KEY (rodzic_id); -- Completed on 2007-01-02 18:48:37 CET -- -- PostgreSQL database dump complete -- -- -- PostgreSQL database dump -- -- Started on 2007-01-02 18:48:23 CET SET client_encoding = 'UTF8'; SET check_function_bodies = false; SET client_min_messages = warning; SET search_path = public, pg_catalog; SET default_tablespace = ''; SET default_with_oids = false; -- -- TOC entry 1191 (class 1259 OID 45762) -- Dependencies: 1514 4 1189 -- Name: dziecko; Type: TABLE; Schema: public; Owner: mike; Tablespace: -- CREATE TABLE dziecko ( dziecko_id serial NOT NULL, ulubione character(10) ) INHERITS (rodzic); -- -- TOC entry 1520 (class 0 OID 0) -- Dependencies: 1190 -- Name: dziecko_dziecko_id_seq; Type: SEQUENCE SET; Schema: public; Owner: mike -- SELECT pg_catalog.setval(pg_catalog.pg_get_serial_sequence('dziecko', 'dziecko_id'), 3, true); -- -- TOC entry 1518 (class 0 OID 45762) -- Dependencies: 1191 -- Data for Name: dziecko; Type: TABLE DATA; Schema: public; Owner: mike -- INSERT INTO dziecko (rodzic_id, rodzic, rodzic2, dziecko_id, ulubione) VALUES (5, 'dd ', 'DD ', 2, '44 '); INSERT INTO dziecko (rodzic_id, rodzic, rodzic2, dziecko_id, ulubione) VALUES (3, 'cc ', 'CC ', 3, 'dziecko '); -- -- TOC entry 1517 (class 2606 OID 45767) -- Dependencies: 1191 1191 -- Name: dziecko_pkey; Type: CONSTRAINT; Schema: public; Owner: mike; Tablespace: -- ALTER TABLE ONLY dziecko ADD CONSTRAINT dziecko_pkey PRIMARY KEY (dziecko_id); -- Completed on 2007-01-02 18:48:23 CET -- -- PostgreSQL database dump complete -- zmienilem nazwy tabel/pol i wprowadzone dane. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
zatem zrobilam wg Twojego przykladu:
test=# create table rodzic (rodzic_id serial not null, rodzic char(10) not null, rodzic2 char(10) not null); ***(Single step mode: verify command)******************************************* create table rodzic (rodzic_id serial not null, rodzic char(10) not null, rodzic2 char(10) not null); ***(press return to proceed or enter x and return to cancel)******************** NOTICE: CREATE TABLE will create implicit sequence "rodzic_rodzic_id_seq" for serial column "rodzic.r odzic_id" CREATE TABLE test=# insert into rodzic (rodzic_id, rodzic, rodzic2) values (1, 'aa', 'AA'); ***(Single step mode: verify command)******************************************* insert into rodzic (rodzic_id, rodzic, rodzic2) values (1, 'aa', 'AA'); ***(press return to proceed or enter x and return to cancel)******************** INSERT 0 1 test=# insert into rodzic (rodzic_id, rodzic, rodzic2) values (2, 'bb', 'BB'); ***(Single step mode: verify command)******************************************* insert into rodzic (rodzic_id, rodzic, rodzic2) values (2, 'bb', 'BB'); ***(press return to proceed or enter x and return to cancel)******************** INSERT 0 1 test=# insert into rodzic (rodzic_id, rodzic, rodzic2) values (3, 'cc', 'CC'); ***(Single step mode: verify command)******************************************* insert into rodzic (rodzic_id, rodzic, rodzic2) values (3, 'cc', 'CC'); ***(press return to proceed or enter x and return to cancel)******************** INSERT 0 1 test=# alter table rodzic add constraint rodzic_pkey primary key (rodzic_id); ***(Single step mode: verify command)******************************************* alter table rodzic add constraint rodzic_pkey primary key (rodzic_id); ***(press return to proceed or enter x and return to cancel)******************** NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "rodzic_pkey" for table "rodzic" ALTER TABLE test=# select * from rodzic; ***(Single step mode: verify command)******************************************* select * from rodzic; ***(press return to proceed or enter x and return to cancel)******************** rodzic_id | rodzic | rodzic2 -----------+------------+------------ 1 | aa | AA 2 | bb | BB 3 | cc | CC (3 rows) test=# create table dziecko (dziecko_id serial primary key not null, ulubione char(10)) inherits (rodz ic); ***(Single step mode: verify command)******************************************* create table dziecko (dziecko_id serial primary key not null, ulubione char(10)) inherits (rodzic); ***(press return to proceed or enter x and return to cancel)******************** NOTICE: CREATE TABLE will create implicit sequence "dziecko_dziecko_id_seq" for serial column "dzieck o.dziecko_id" NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "dziecko_pkey" for table "dziecko" CREATE TABLE test=# insert into dziecko (rodzic_id, rodzic, rodzic2, dziecko_id, ulubione) values (5, 'dd', 'DD', 2 , '44'); ***(Single step mode: verify command)******************************************* insert into dziecko (rodzic_id, rodzic, rodzic2, dziecko_id, ulubione) values (5, 'dd', 'DD', 2, '44') ; ***(press return to proceed or enter x and return to cancel)******************** INSERT 0 1 test=# insert into dziecko (rodzic_id, rodzic, rodzic2, dziecko_id, ulubione) values (3, 'cc', 'CC', 3 , 'dziecko'); ***(Single step mode: verify command)******************************************* insert into dziecko (rodzic_id, rodzic, rodzic2, dziecko_id, ulubione) values (3, 'cc', 'CC', 3, 'dzie cko'); ***(press return to proceed or enter x and return to cancel)******************** I TU GENERALNIE TROCHE INNEGO WYNIKU POWINNISMY SIE SPODZIEWAC.. Z TEGO CO ROZUMUJE, NIE POWINNO BYC 3CIEJ KOLUMNY GDYZ JEST ONA WSPOLNA DLA RODZICA I DZIECKA.. INSERT 0 1 test=# select * from only rodzic; ***(Single step mode: verify command)******************************************* select * from only rodzic; ***(press return to proceed or enter x and return to cancel)******************** rodzic_id | rodzic | rodzic2 -----------+------------+------------ 1 | aa | AA 2 | bb | BB 3 | cc | CC (3 rows) HMM, TO JAK? |
|
|
![]()
Post
#8
|
|
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 * -- wyswietli rekordy dodawane bezposrednio do tabeli rodzic czyli bez dzieci * 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 :/ |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
dobra. wsjo jasne. w pierwszym poscie dodalam ze nie wykluczam nieprawidlowego toku myslenia.
po prostu myslalam ze " select * from only " pokaze mi tylko to co nalezy do rodzica, bez czesci wspolnej rodzica i dziecka. no a jest tak jak napisales! dzieki za naprowadzenie i przepraszam za tak banalny problem.. ps. co do konsoli, to kurcze co sie tak mnie wszyscy czepiaja;) ja na prawde tak wole. pzdr!:) |
|
|
![]()
Post
#10
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat dzieki za naprowadzenie i przepraszam za tak banalny problem.. Jaki tam banalny, chyba nie widzialas banalnych problemow na tym forum (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Cytat ps. co do konsoli, to kurcze co sie tak mnie wszyscy czepiaja;) ja na prawde tak wole. Tylko ja sie czepiam (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) bo nieuzywajac konsoli nie musze znac skladni tworzenia tabel (za trudna jak dla mnie (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ), indeksow itd. Liste tabel w bazie i pol mam caly czas wyswietlona, dla mnie to duza wygoda. OK, juz do niczego cie nie naklaniam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
a postgresa masz u siebie pod win czy pod linuxem? bo jesil pod tym drugim to bym jeszcze miala male konfiguracyjne pytanko.. (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
|
|
|
![]()
Post
#12
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Linux
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
o swietnie!
wiem ze to nie forum linuxowe (na takich takze szukam z tym problemem pomocy:/) no ale moze a noz ktos bedzie mial pomysl! mam u siebie: slackware 11.0, php-5.0, apache-1.3, postgresa-8.2 problem jest nastepujacy: php nie rozumie polecen sqla. tzn. w przypadku prostego skryptu: <?php $connection=pg_connect ("host=localhost, port=5432, dbname=baza, user=postgres, password=haslo") or die ("nie mozna sie polaczyc z baza!"); echo "done!"; ?> wyrzuca mi na stronie: Call to undefined function pg_connect() in /var/www/htdocs/glowna.php probowalam dodac na poczatku skryptu: dl('pgsql.so'), ustawiwiszy wczesniej w php.ini enable_so na on oraz przy wylaczonym safe_mode. wtedy do powyzszego komunikatu dostaje jeszcze: Warning: dl() [function.dl]: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/pgsql.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/pgsql.so: cannot open shared object file: No such file or directory in /var/www/htdocs/glowna.php on line 3 co dziwne jest gdyz "/usr/local/php/lib/php/extensions/ " u mnie wogole nie istnieje. u mnie extension_dir=/usr/lib/php/extensions/ dalej: znalazlam w dokumentacji php.net taka konfiguracje: ./configure --with-pgsql=/usr/local/pgsql/data --with-apxs=/www/bin/apxs tudziez: ./configure --with-apxs --with-pgsql=shared konfiguracja przebiega ok, ale przy # make sie taki problem pojawia: /usr/local/php/sapi/apache/mod_php5.c:1022: error: syntax error before "application" /usr/local/php/sapi/apache/mod_php5.c:1024:38: warning: no newline at end of file make: *** [sapi/apache/mod_php5.lo] Error 1 jak robie: ./configure tylko z pgsql, bez apxs to wsjo ok przechodzi, no ale na stronie nadal 'call to udefined function..' przekonfigurowalam jeszcze raz apache ./configure --prefix=/www --enable-module=so ale sytuacja jak powyzej.. masz jakis pomysl? bo juz chyba z 3ci dzien z tym walcze :| |
|
|
![]()
Post
#14
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Ja robilem (teraz nie uzywam apacha) to tak (dla apacha 1)
pominalem nieistotne parametry, pg mam w niestandardowym miejscu Kod ./configure --prefix=/software/php --with-apxs=/software/apache-1.3/bin/apxs --with-pgsql=/software/postgresql --with-pdo-pgsql=/software/postgresql /software/postgresql to katalog instalacji PG I korzystalem z PDO nie z pg_connect. Teraz mam php jako fcgi+ lighttpd (www serwer) Kod ./configure --prefix=/software/php --enable-fastcgi --enable-force-cgi-redirect --with-pgsql=/software/postgresql --with-pdo-pgsql=/software/postgresql -- wlasciwie to samo, i pg_connect() dziala.
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
w koncu jakos poszlo. wywalilam wszystko i przeprowadzilam instalacje od nowa. i jest si. wszystko sie widzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
pzdr i dzieki za pomoc!! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 05:03 |