Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] szukanie w dwóch tablicach
tenloginjestzaje...
post 23.02.2017, 20:28:56
Post #1





Grupa: Zarejestrowani
Postów: 358
Pomógł: 1
Dołączył: 20.07.2014

Ostrzeżenie: (0%)
-----


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 ).

Ten post edytował tenloginjestzajety 23.02.2017, 20:29:56


--------------------
Nigdy nie zapominam kliknąć "pomógł". Zastosowanie na stronie [prosze nie spamuj]
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
trueblue
post 23.02.2017, 20:41:13
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A czy te tabele są w relacji ze sobą i dlatego je połączyłeś JOIN'em?


--------------------
Go to the top of the page
+Quote Post
tenloginjestzaje...
post 23.02.2017, 20:56:58
Post #3





Grupa: Zarejestrowani
Postów: 358
Pomógł: 1
Dołączył: 20.07.2014

Ostrzeżenie: (0%)
-----


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


Ten post edytował tenloginjestzajety 23.02.2017, 21:04:10


--------------------
Nigdy nie zapominam kliknąć "pomógł". Zastosowanie na stronie [prosze nie spamuj]
Go to the top of the page
+Quote Post
trueblue
post 23.02.2017, 21:07:03
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
tenloginjestzaje...
post 23.02.2017, 21:16:23
Post #5





Grupa: Zarejestrowani
Postów: 358
Pomógł: 1
Dołączył: 20.07.2014

Ostrzeżenie: (0%)
-----


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


--------------------
Nigdy nie zapominam kliknąć "pomógł". Zastosowanie na stronie [prosze nie spamuj]
Go to the top of the page
+Quote Post
trueblue
post 23.02.2017, 21:35:06
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:35