Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] szukanie w dwóch tablicach
Forum PHP.pl > Forum > Przedszkole
tenloginjestzajety
Witam
Wyszukuje rekordy wg określonych kryteriów w jednej tablicy, chciałbym aby szukało również danych w drugiej tablicy (tablica2), próbuje z JOIN, ale nie działa. Dzięki

  1. $sql = "SELECT * FROM `tablica1` WHERE `phone` = '$hphone' OR `mail` = '$hmail' OR `id` = '$hid' ORDER BY `id` DESC LIMIT $limit, 10";


  1. "SELECT p.* FROM prywatne_inwestycje as i JOIN prywatne as p ON p.id = i.oid WHERE i.mail = '$hmail' OR p.mail = '$hmail' OR i.phone = '$hphone' OR p.phone = '$hphone' OR p.id = '$hid' ORDER BY p.id DESC LIMIT $limit, 10";


Niestety wyszukuje tylko w tabeli prywatne_inwestycje ( i ).
trueblue
A czy te tabele są w relacji ze sobą i dlatego je połączyłeś JOIN'em?
tenloginjestzajety
Wyjaśnię na przykładzie forum:

Tabela 1 to nazwa tematu, w którym są różne maile.
Tabela 2 to posty podczepione do tematów z tabeli 1, poprzez "oid", w których są różne maile.

Próbuje zrobić wyszukiwanie po mailu, telefonie, id jednak nie potrafię tego zrobić jednym zapytaniem dla dwóch tabel.

Mam też problem z wyświetlaniem wyników z dwóch tabel bez JOIN, pokazuje wiele razy nazwę tematu ( tabela1 ) w ilości zależnej od ilości postów ( tabela2 ). Nie wiem jak w takim zapytaniu zastosować DISCTINCT

  1. SELECT p.*,i.oid FROM prywatne AS p, prywatne_inwestycje AS i WHERE p.id = i.oid ORDER BY i.id DESC
trueblue
Jeśli Twoje drugie zapytanie wyszukuje tylko w prywatne_inwestycje, to sprawdź czy jest powiązanie między tabelami (tzn. czy dla kryteriów, np. telefonu zadanego do tabeli prywatne wybrane id istnieje w tabeli prywatne_inwestycje).

Oczywistym jest, że przy takim powiązaniu dwóch tabel będziesz mieć zwielokrotnioną nazwę tematu. Nie wiem jednak jaki chcesz wynik osiągnąć tym zapytaniem.
tenloginjestzajety
Dla zapytania wyświetla tak:

  1. SELECT p.*,i.oid FROM prywatne AS p, prywatne_inwestycje AS i WHERE p.id = i.oid ORDER BY i.id DESC


Dowolna nazwa tematu
- post 1
- post 2
- post 3

Dowolna nazwa tematu
- post 1
- post 2
- post 3

Dowolna nazwa tematu
- post 1
- post 2
- post 3


a powinno być tak:

Dowolna nazwa tematu
- post 1
- post 2
- post 3


Może ktoś wpadnie jeszcze na jakiś pomysł z wyszukiwaniem JOIN. Przypomnę, że wyszykuje jedynie w tabeli: prywatne_inwestycje, a powinno w obu tabelach. DZIĘKI

  1. SELECT p.* FROM prywatne_inwestycje as i JOIN prywatne as p ON p.id = i.oid WHERE i.mail = '$hmail' OR p.mail = '$hmail' OR i.phone = '$hphone' OR p.phone = '$hphone' OR p.id = '$hid' ORDER BY p.id DESC LIMIT $limit, 10
trueblue
Jeśli "Dowolna nazwa tematu" to jest ten sam temat, to problem nie leży w zapytaniu (choć być może łączysz tabele po nieodpowiednich polach), lecz w danych.

Co do wyszukiwania pisałem wyżej. Ale być może problem jest związany z powyższym.
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.