Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] problem z podselectem w którym jest UNION
Forum PHP.pl > Forum > Bazy danych > MySQL
LubieWino
Witam, sprawa prosta do wyjaśnienia, mam takiego selecta (treść jego prawie nie istotna):

  1. <?php
  2. $zapytanie = 
  3. "(SELECT pytnr FROM pytanie where temat LIKE '%$temacik%' OR tresc LIKE ' %$temacik%') 
  4. UNION 
  5. (SELECT pytnr FROM odpowiedz where temat LIKE '%$temacik%' OR tresc LIKE '%$temacik%') 
  6. ORDER BY pytnr DESC LIMIT 30";
  7. ?>


Ogólnie mówiąc wyszukuje mi numery pytań wg podanych kryteriów - i jest OK, WSZYSTKO DZIAŁA.

Tyle, że w tabeli, w której wyszukuje te numery pytań, nie tylko jest nr pytania - jest też temat, ksywka, data itd.. i chciałbym to wszytko wyciągnąć na podstawie znajdowanych numerów, wobec czego próbuje zrobić podselecta:

  1. <?php
  2. $zapytanie =
  3. "SELECT * FROM pytanie where pytnr in (
  4. (SELECT pytnr FROM pytanie where temat LIKE '%$temacik%' OR tresc LIKE ' %$temacik%') 
  5. UNION 
  6. (SELECT pytnr FROM odpowiedz where temat LIKE '%$temacik%' OR tresc LIKE '%$temacik%'))
  7. ORDER BY pytnr DESC LIMIT 30";
  8. ?>


i niestety nie działa :/

Robiłem testy i zwróciłem uwage ze jesli chce zrobić podselecta to nie może być tam UNION - bo wtedy nie działa :/

jak to można rozwiązać? mozna to jakos rozwiązać w jednym SELECTcie?
najtje
to zrob joina i już smile.gif

  1. <?php
  2. $sql = "
  3. "SELECT * FROM pytanie natural join 
  4.  (
  5. SELECT pytnr FROM pytanie where temat LIKE '%$temacik%' OR tresc LIKE ' %$temacik%'
  6. UNION 
  7. SELECT pytnr FROM odpowiedz where temat LIKE '%$temacik%' OR tresc LIKE '%$temacik%'
  8. ) as q1
  9. ORDER BY pytnr DESC LIMIT 30";
  10. ?>
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.