Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak skonstruować zapytanie
Forum PHP.pl > Forum > Bazy danych > MySQL
remikpp
Witam winksmiley.jpg
Mam baze danych i 2 tabele:

Kod
keywords{id|name}
link{id|id1|id2}


w tabeli keywords mam np:
Kod
1. kot
2. maly kot
3. ladny kot
4. bardzo ladny kot


i w link relacje:
Kod
1. 1 2
2. 1 3
3. 3 4


i teraz chciałbym jednym zapytaniem wyciągnąc dla z "kot" wszystkie wyniki. Jak to zrobić? czym się zainteresować? będę wdzięczny za wszelką pomoc smile.gif

PS. Tak wyciągam tylko
Kod
[/code]pierwszą relacje:
<pre style="margin-top: 0pt; display: inline;">[code]SELECT related.name FROM keywords related, keywords base, link WHERE base.name = 'kot' AND base.id = link.id1 AND related.id = link.id2


Edit: tych zagnieżdzeń relackji będzie n smile.gif
JoShiMa
Może JOIN Ci pomoże winksmiley.jpg
remikpp
wstydnis.gif męczę się z tymi JOIN'ami i nic nie moge wymyślić. Gdyby ktośbył tak dobry i przynajmniej podpowiedział z jakiej własności to napisać. Coś mi się zdaje, że niepotrzebnie w relacjach jest to pierwsze 'id'.
artega
Czy nie prościej byłoby wyszukać wszystkie słowa kluczowe przez klauzule LIKE?
  1. SELECT * FROM keywords WHERE name LIKE '%kot%'

Jeżeli bardzo się upierasz na wykorzystanie powiązań to możesz zastosować JOIN
  1. SELECT k.name AS k1_name, k2.name AS k2_name FROM keywords AS k LEFT JOIN link AS l ON (k.id = l.id1) LEFT JOIN keywords AS k2 ON (k2.id = l.id2) WHERE k.name = 'kot'

A gdybyś aż tak się uparł na n zagnieżdżeń to optymalnym rozwiązaniem jest zapoznanie się z metodą i wprowadzenie jej w życie smile.gif
remikpp
O wielkie dzięki za tego linka smile.gif Super dziekuje za pomoc i wprowadzam w życie smile.gif


A LIKE niestety nie może być, bo nie zawsze dziecko będzie zawierać ten wyraz (może źle to zobrazowałem wtedy) Jeszcze raz THX smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.