sortowanie po nazwisku, dwie tabele

Odpowiedz Nowy wątek
2014-12-15 14:44
0

Witam,
mam dwie tabele:

autorzy
id, nazwisko, imie

ksiazki
id, tytul, id_autor1, id_autor2, id_autor3

Zastanawiam się jak posortować alfabetycznie te nazwiska, ponieważ używając zapytania:

SELECT a.id, k.id_autor1, a.nazwisko, a.imie, k.id_autor2, a.nazwisko, a.imie, k.id_autor3, a.nazwisko, a.imie FROM ksiazki k JOIN autorzy a ON
k.id_autor1=a.id
ORDER BY a.nazwisko, a.imie

w każdej kolumnie z nazwiskiem wyświetla mi się nazwisko dla pierwszego autora. Brakuje powiązania między nazwiskiem a danym id. Jak uzyskać takie powiązanie? Z góry dzięki za odpowiedź

powineneś zrobić tabele ksiazkijeden do wielu autorzy a nie - karolinaa 2014-12-16 21:27

Pozostało 580 znaków

2014-12-15 14:47
0

Spróbuj:

SELECT a.id, k.id_autor1, a.nazwisko, a.imie, k.id_autor2, a.nazwisko, a.imie, k.id_autor3, a.nazwisko, a.imie FROM ksiazki k JOIN autorzy a ON
k.id_autor1=a.id OR k.id_autor2=a.id OR k.id_autor3=a.id 
ORDER BY a.nazwisko, a.imie

Pozostało 580 znaków

2014-12-15 15:32
0

Niestety efekt jest taki sam tzn. wyświetla się nazwisko pierwszego autora.

Pozostało 580 znaków

2014-12-15 16:25
0

Nie pierwszego, tylko tego po którym się złączyło. Powyższe zapytanie jest prawidłowe. Dla każdej książki zwraca Ci tyle wierszy ilu ta książka ma autorów.

SELECT k.tytul, a.nazwisko, a.imie, a.id FROM ksiazki k JOIN autorzy a ON
k.id_autor1=a.id OR k.id_autor2=a.id OR k.id_autor3=a.id 
ORDER BY a.nazwisko, a.imie

Teraz jeśli chcesz to mieć w formie: nazwiska obok siebie, to skorzystaj z PIVOT


"There are people who actually like programming. I don't understand why they like programming."
Rasmus Lerdorf

Pozostało 580 znaków

2014-12-15 16:32
1

A co zrobisz, jak książka będzie miała czterech autorów?

Pozostało 580 znaków

2014-12-16 09:01
0

Podobny temat jest tu
http://4programmers.net/Forum/Bazydanych/243335-mysql-_zapytanie

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0