[SQL] Kłopot z relacjami w bazie

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
axmann
Posty: 2
Rejestracja: pn paź 03, 2005 11:16 pm

[SQL] Kłopot z relacjami w bazie

Post autor: axmann »

Witam
Jestem poczatkujacy. Prosta baza.
Przykladowo 2 tabele

a) pierwsza nazwa o polach m.in. id_nazwa, site, site_link, ranking

b) druga site_games o polach: id_nazwa, id_gry

Chce znalezc np. rekord site oraz id_gry.
Zrobilem takie zapytanie do danych z formularza:
[sql]SELECT nazwa.id_nazwa, nazwa.site, nazwa.site_link, nazwa.ranking
FROM nazwa, site_games WHERE nazwa.site LIKE \"%$site%\" &&
site_games.id_gry=='$id_gry'[/sql]

Problem - sql daje zle wyniki. Wyswietla wszystko gdy zgadza sie nazwa.site LIKE \"%$site%\" a nie ten wlasciwy rekord.

Prosze o pomoc.
viraptor
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn cze 28, 2004 12:58 pm
Kontakt:

Re: [SQL] Kłopot z relacjami w bazie

Post autor: viraptor »

Jeśli dobrze rozumiem o co ci chodzi, to musisz dołączyć jeszcze nazwa.id_nazwa=site_games.id_nazwa
Ale to się robi przez SELECT ... JOIN ON ...
http://dev.mysql.com/doc/refman/4.1/en/join.html
v0lrath
Posty: 13
Rejestracja: śr gru 07, 2005 10:55 pm
Kontakt:

Re: [SQL] Kłopot z relacjami w bazie

Post autor: v0lrath »

Może spróbuj czegoś takiego (nie wiem, ale może o coś takiego chodzi):

[sql]
SELECT nazwa.id_nazwa, nazwa.site, nazwa.site_link, nazwa.ranking
FROM nazwa, site_games
INNER JOIN site_games
ON nazwa.id_nazwa == site_games.id_nazwa
WHERE nazwa.site LIKE "%$site%" AND site_games.id_gry == '$id_gry'
GROUP BY nazwa.id_nazwa
[/sql]
ODPOWIEDZ