Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] Dwa selecty w jednym zapytaniu
Forum PHP.pl > Forum > Bazy danych
M@X
Witam.
Posiadam proste zapytanie:
  1. $query=mysql_query('SELECT * FROM tabela ORDER BY nazwa');
  2. while($row=mysql_fetch_array($query))
  3. {
  4. echo '
  5. <tr>
  6. <td>'.$row['nazwa'].'</td>
  7. <td>'.$row['data'].'</td>
  8. </tr>';
  9. }

Listuje ono dwie kolumny: nazwy i daty (data w bazie format datetime)

Chicałem dodać jeszcze jedną kolumne w której znajdzie się jakiś napis, jeśli datetime + 45 minut będzie większy niż NOW().
Tzn: jakaś nazwa ma swój datetime: powiedzmy 2013-10-03 20:00:00 to żeby napis pojawiał się, jeśli faktyczna godzina będzie powyżej 2013-10-03 20:45:00

Na samej zmiennej $row['data'] + INTERVAL 45 MIN >= NOW() tego raczej nie wykonam...
Wydaje mi się że to musi być jeszcze w zapytaniu, ale nie moge do tego SELECTA dodać bo zwykły $row['data'] nie będzie się wyświetlał.
LEFT JOIN i UNION też chyba odpadają bo nie ma dwóch tabel.

Ma ktoś jakiś pomysł jak to logicznie rozwiązać ?
timon27
Cytat(M@X @ 3.10.2013, 19:47:58 ) *
Na samej zmiennej $row['data'] + INTERVAL 45 MIN >= NOW() tego raczej nie wykonam...


Czemu nie?
Tylko na samym mysql, bo po co php



  1. SELECT * FROM tabela WHERE ADDTIME(DATA, '0 0:45')>NOW() ORDER BY nazwa


//edit:
"data" powinno być małymi literami, nie wiem czemu forum zmienia mi na duże
M@X
Tak nie moze byc bo wtedy wyswietli tylko te wyniki ktore spelniaja warunek WHERE a musza byc wyswietlane wszystkie rekordy tylko jedna zmienna ma wyciagac date po zmiane.
freemp3
Wystarczy użyć instrukcji warunkowych:
Kod
SELECT *, IF(date + INTERVAL 45 MINUTE >= NOW() , 1, 0) as pole FROM tabela ORDER BY nazwa

Jeśli wyrażenie jest prawdziwe zostanie zwrócona liczba 1, w przeciwnym wypadku 0.
b4rt3kk
Kwestia jest prosta:

  1. SELECT *, CASE WHEN DATA + INTERVAL 45 MINUTE > NOW() THEN 'jakis teksts' ELSE 'inny tekst' END AS dodatkowa_kolumna::text FROM tabela ORDER BY nazwa
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.