Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] podzapytanie przy wyszukiwaniu pełnoteksotwym
Forum PHP.pl > Forum > Przedszkole
szybki
  1. SELECT home.*, c.name AS city, c.country_id AS country_id, co.name AS country_name
  2. FROM home AS home, cities AS c, countries AS co
  3. WHERE home.city_id=c.id AND
  4. co.id = c.country_id AND
  5.  
  6. MATCH (home.name, home.description) AGAINST("+'.$_GET['search'].'" IN BOOLEAN MODE)
  7. ORDER BY home.id DESC LIMIT 4 OFFSET 4


Jak do tego zapytania dodać kolejne, aby na podstawie ID pobrało dane z innej tabeli?

Czyli aby dodatkowo wykonało sie:

  1. SELECT * FROM b2h WHERE home_id=home.id
JanuszPHP
  1. SELECT home.*,b.*, c.name AS city, c.country_id AS country_id, co.name AS country_name
  2. FROM home AS home, cities AS c, countries AS co
  3. JOIN b2h b WHERE b.home_id=home.id
  4. WHERE home.city_id=c.id AND
  5. co.id = c.country_id AND
  6.  
  7. MATCH (home.name, home.description) AGAINST("+'.$_GET['search'].'" IN BOOLEAN MODE)
  8. ORDER BY home.id DESC LIMIT 4 OFFSET 4
szybki
Miałem już coś takiego, dostaje komunikat

  1.  
  2. Warning: PDO::query(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE home.city_id=c.id AND co.id = c.country_id AND ' at line 4 in /var/www/html/w/x.php on line 35
  3.  
  4. Fatal error: Call to a member function fetchAll() on boolean in /var/www/html/w/x.php on line 41
Pyton_000
JOIN b2h b ON
szybki
Również nie działa, błąd jak wyżej, a kod zmieniłem według wskazówek.
JanuszPHP
Zagalopowałem się...
to:
  1. JOIN b2h b WHERE b.home_id=home.id


na to:
  1. JOIN b2h b ON b.home_id=home.id
szybki
Może jestem już zmęczony i źle to wpisałem, ale co jeśli w tabeli b2h o home_id znajduje się więcej niż 1 rekord a chciałbym żeby pobierały się wszystkie.

I jednak jest błąd w tym zapytaniu, ponieważ nie pobiera wszystkich rekordów z danej tabeli po JOIN a tylko ostatni.
Pyton_000
Pokaż zapytanie
szybki
  1. SELECT home.*,b.*, c.name AS city, c.country_id AS country_id, co.name AS country_name
  2. FROM home AS home, cities AS c, countries AS co
  3. JOIN b2h b ON b.home_id=home.id
  4. WHERE home.city_id=c.id AND
  5. co.id = c.country_id AND
  6.  
  7. MATCH (home.name, home.description) AGAINST("+'.$_GET['search'].'" IN BOOLEAN MODE)
  8. ORDER BY home.id DESC LIMIT 4 OFFSET 4


W takim zapytaniu pobiera mi wszystkie rekordy tyle razy co jest rekordów w innej tabeli. a jak zrobić aby pobierały się w jednej tablicy dla danego rekordu?

Dokładnie to JOIN b2h b ON b.home_id=home.id pobiera jeszcze raz rekord, zamiast dodać go do tablicy dla danego id.
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.