![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam 5 tabel: (IMG:http://img9.imageshack.us/img9/1790/relt.jpg) Stworzyłem zapytanie:
Ale jest ono niekompletne bo wyniki wyglądają następująco: Kod 1 | tytul1 | tytul2 | wydawn1 | 2009 | isbn1 | 412 | 2x5 | 0 | 12 | fajna dosc | c:/ | 1 | 1 | 1 | 1 | zenon1 | zbigniew2 | kowal | polak | znany jest | 1 | zenon1 | zbigniew2 | kowal | polak | znany jest | 2 | mgr | 1 | 1 | 2 | 1 | tytul1 | tytul2 | wydawn1 | 2009 | isbn1 | 412 | 2x5 | 0 | 12 | fajna dosc | c:/ | 1 | 1 | 1 | 1 | zenon1 | zbigniew2 | kowal | polak | znany jest | 1 | zenon1 | zbigniew2 | kowal | polak | znany jest | 1 | inz | 2 | 1 | 1 | 1 | tytul1 | tytul2 | wydawn1 | 2009 | isbn1 | 412 | 2x5 | 0 | 12 | fajna dosc | c:/ | 2 | 1 | 2 | 2 | janek1 | alek2 | sypniewski | polak | znany jest tez | 2 | janek1 | alek2 | sypniewski | polak | znany jest tez | 3 | dr | 4 | 2 | 3 | 2 | tytul2 | tytul3 | wydaw22n1 | 2109 | isbn133 | 4120 | 2x52 | 1 | 122 | f11ajna dosc | c:dwukropek | 3 | 2 | 3 | 3 | janek222 | alek3333 | sypn4444 | pola555k | znan555555y jest tez | 3 | janek222 | alek3333 | sypn4444 | pola555k | znan555555y jest tez | 0 | brak | 6 | 3 | 0 | Czyli książka pierwsza ma 2 autorów z których jeden ma 1 tytuł a drugi ma 2 tytuły. Przez co książka o id=1 jest powtórzona 3 razy. Jak powinno wyglądać zapytanie aby w wyniku książka pojawiała się tylko raz a jedynie autorzy z przydzielonymi do nich tytułami byli wyświetlani tyle razy ilu ich jest? Ten post edytował sadistic_son 12.12.2009, 01:30:52 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Wcale nie wyklucza. Wystarczy, że w tabeli umieścisz je jako jedną z możliwości. Mgr, mgr inż. i inż to były by 3 osobne warianty. Dlatego pisałem o kombinacjach tytułów. Ich naprawdę nie ma aż tyle, by rozbijać to na kilka tabel i potem jeszcze je JOINować. Tylko niepotrzebnie dokładasz złączenie w zapytaniu. t_title i t_author_title śmiało mogą być jedną tabelą i w takim wypadku zmieni Ci się relacja na poziomie t_author i t_author_title. A wyszukiwanie zmieni ci się niewiele. Dlaczego niewiele? Bo tylko o tyle, że będziesz musiał znać przy szukaniu inżyniera gdzie jest inż, mgr inż, dr inż, prof. dr hab. inż. i tego typu. To samo z innymi tytułami. Wyszukiwanie więc będzie nie po jednym id określającym tytuł (WHERE id=1), ale kilku (WHERE id IN (1,4,5,6) ). Całość grupowana jest oczywiście po id książki, ale GROUP_CONCAT na autorach to przecież w takim wypadku już nie problem chyba (IMG:style_emoticons/default/winksmiley.jpg)
EDIT: Poprawka literówek. Nienawidzę pisania z kompa dziewczyny. Połowę klawiszy muszę walić chyba młotkiem bo nie reagują. Nawet spacja działa ze skutecznością 50% :/ Ten post edytował thek 12.12.2009, 10:55:46 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 07:36 |