Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Niewykonalne zapytanie ?
kpax81
post 19.01.2007, 09:17:13
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 19.01.2007
Skąd: Olsztyn

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


Siemanko
Mam male pytanko zwiazane z zapytaniem w mysqlu:)

Storzylem 3 tabele.

Ksiazki ( id_ksiazki int not null auto_increment,
tytul varchar(100));

Autorzy (id_autora int not null auto_increment,
imie varchar(10),
nazwisko varchar(30));

Relacje(id_ksiazki int unsigned not null,
id_autora int unsigned not null);


Ta trzecia tabelka po to jakby ksiazka maiala wiecej niz jedengo
autora.
Np ksiazka pt:"Kubus puchatek" autorzy: "Marcin Cyrankowski"
i "Stefek Burczymucha"

Wpisalem te nazawiska do tabeli auorzy i tytul do tabeli ksiazki a do
tabeli relacje wstawilem dwa rekordy do jednej ksiazki bo dwa nazwiska
np. tak
insert into relacje ('1','1'),('1','2'); pierwsz wartosc to
id_ksiazki druga atorow.

Zeby wyswietlic interesujace mnie informacje o ksiazce uzywam
polecenia:

select tytul,imie,nazwisko from ksiazki,autorzy, relacje where
relacje.id_ksiazki=ksiazki.id_ksiazki and
relacje.id_autora=autorzy.id_autora;
i wszysto ladnie dziala exclamation.gif!!

Problem w tym ze jezeli mam dwoch autorow to te informacje
wyswietlane sa w dwoch rekordach.:
Kubus puchatek --- Marcin Cyrankowski
Kubus puchatek --- Stefek burczymuch i to mi sie wlasnie nie
podoba!!!

Bo robie stronke z ksiazkami i jak wrzuce na stronke kodzik php zeby
pobral informacje na temat ksiazek t owyswietla mi je w tylu
rekordach ilu ksiazka ma autorow exclamation.gif
Jak to zmienic questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?
Zeby bylo wyswietlone Kubus puchatek -- Marcin
Cyrankowski, Stefek Burczymucha
Go to the top of the page
+Quote Post
kszychu
post 19.01.2007, 09:55:04
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


A nie prościej autorów trzymać w jednym polu razem z danymi książki? Przy wyszukiwaniu po autorze możesz wówczas użyć LIKE.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
Cienki1980
post 19.01.2007, 10:48:42
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Cytat(kszychu @ 19.01.2007, 09:55:04 ) *
A nie prościej autorów trzymać w jednym polu razem z danymi książki? Przy wyszukiwaniu po autorze możesz wówczas użyć LIKE.

Chyba nie za bardzo fortunny sposób. Co w przypadku jak chesz wyciągnąc samych autorów i zrobisz zapytanie LIKE %Cyranowski% a w wyniku dostaniesz Cyranowski,Babecki questionmark.gif Dostane dwa nazwiska a chciałem tylko jedno.

@kpax81: przy tak ułożonej bazie danych nie widze możliwego zapytania, żeby otrzymać to czego żądasz.

Jedynie obrobienie danych da taki efekt.


--------------------
404
Go to the top of the page
+Quote Post
kpax81
post 19.01.2007, 11:44:24
Post #4





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 19.01.2007
Skąd: Olsztyn

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


To jak inaczej ulozyc to baze ?

Moge poprostu stworzyc dwie table:

ksiazki(id_ksiazki,tytul,id_autora)
autorzy(id_autora,imi,nazwisko)


Jezeli dodam w ten sposob ksiazke insert into ksiazki values('','Tytul ksiazki','Autor1;Autor2); --- program juz mi zwraca ostzrezenie ale ksiazka zostaje dodana.
Ale jak pobieram informacje
select tytul,imie,nazwisko from ksiazki, autorzy where ksiazki.id_autora=autorzy.id_autora to zostaje wyswietlone tylko jedno nazwisko sad.gif

Jest jakis konkretny sposob na zapytanie lub jakis inny sposob zaprojektowania tabel ?

Prosze pomozcie bo juz wymiekam:)
Go to the top of the page
+Quote Post
Cienki1980
post 19.01.2007, 11:48:45
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Nie widze możliwości tak zaprojektowania bazy danych, żeby w jednym wierszu z książką byli wypisani wszyscy autorzy poza sposobem, który pokazał kszychu ale wg mnie ma on też swoje złe strony.


--------------------
404
Go to the top of the page
+Quote Post
kpax81
post 19.01.2007, 12:07:44
Post #6





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 19.01.2007
Skąd: Olsztyn

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


MOze byc to co krzychu zaproponowal tylko nie rozumiem co on zaproponowal smile.gif

Moglbys mi poswiecic 5 min ? bo zaraz nerwicy dostane siedze juz nad tym drugi dzien sad.gif to moje gg:5683416

Stworzyc tabele autorzy ( id_autora, imie_nazwisko)
i wstawiac tak dane do autorow : insert into autorzy values('id_autora','MArcin Cyrankowski, Jan Matejko');
questionmark.gif? Wstawiac dwa nazwiska pod jedno id_autora ? To bylo by dobre ale jak sie autor powtorzy w inej ksiazce to bede musial stworzyc dla niego nowe id a to bezsensu:)

O to chodzilo krzyskowi ?
Go to the top of the page
+Quote Post
wojtek.zielinski
post 19.01.2007, 15:08:05
Post #7





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 19.12.2006
Skąd: Poznań

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


Cytat(kpax81 @ 19.01.2007, 09:17:13 ) *
select tytul,imie,nazwisko from ksiazki,autorzy, relacje where
relacje.id_ksiazki=ksiazki.id_ksiazki and
relacje.id_autora=autorzy.id_autora; [/b] i wszysto ladnie dziala exclamation.gif!!

Najlepszym rozwiazaniem bedzie chyba takie zapytanie:

  1. SELECT k.tytul, a.autorzy
  2. FROM ksiazki k,
  3. (SELECT r.id_ksiazki, GROUP_CONCAT(CONCAT(a.imie,' ',a.nazwisko) SEPARATOR ', ') AS 'autorzy'
  4. FROM autorzy a, relacje r
  5. GROUP BY r.id_ksiazki) a
  6. WHERE a.id_ksiazki = k.id_ksiazki

Nie jestem pewien co do poprawnosci tego zapytania, ale mam nadzieje, ze chociaz podpowie to tok postepowania.


--------------------
Wojtek Zieliński
http://www.zielinscy.pl
php portale cms
Go to the top of the page
+Quote Post
kpax81
post 20.01.2007, 07:54:18
Post #8





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 19.01.2007
Skąd: Olsztyn

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


Moze cos z tego bedzie smile.gif
Teraz wszyscy autorzy sa przypisani do kazdej ksiazki:)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 00:20