Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyświetlanie w tabeli tylko ostatniego połączenia do klienta
Forum PHP.pl > Forum > PHP
dentopolis
pobieram dane z dwóch połączonych tabeli i sortuję wg kolumny pilne z pierwszej tabeli. druga tabela zawiera wykonane telefony do klienta (datetime). chciałbym w tabeli wyświetlić wszystkie dane, ale w kolumnie połączenia mieć tylko datetime ostatniego połączenia. jak to zrobić?

  1. SELECT * FROM oczekujacy LEFT JOIN oczekujacytelefon ON oczekujacy.id=oczekujacytelefon.kto ORDER BY pilne DESC";



  1. echo "<td><a href='polaczenia.php?kto=$id'>";
  2. echo $polaczenie;
  3. echo "</a></td>";
Salvation
Posortuj to jeszcze po datetime malejąco + pokombinuj z GROUP BY - ale ręki nie dam sobie obciąć.
Jak nie zadziała pobranie z bazy tak jak chcesz, to zawsze możesz zrobić z wynikiem co chcesz w PHP.
dentopolis
w jaki sposób mogę w php pobrać tylko najnowszą datę?

mój obecny kod:
  1. $sql = "SELECT oczekujacy.id AS id, oczekujacy.pacjent AS pacjent, oczekujacy.telefon AS telefon, oczekujacy.lekarz AS lekarz, oczekujacy.kategoria AS kategoria, oczekujacy.pilne AS pilne, oczekujacy.dojazd AS dojazd, oczekujacy.dostepny AS dostepny, oczekujacy.informacje AS informacje, oczekujacy.wpisany AS wpisany, oczekujacy.archiwum AS archiwum, oczekujacytelefon.kto AS kto, oczekujacytelefon.polaczenie AS polaczenie FROM oczekujacy LEFT JOIN oczekujacytelefon ON oczekujacy.id=oczekujacytelefon.kto WHERE archiwum = 0 ORDER BY kategoria ASC, pilne DESC";
  2. $result = $conn->query($sql);
  3.  
  4. if ($result->num_rows > 0) {
  5. while($row = $result->fetch_assoc()) {
  6.  
  7. $id = $row['id'];
  8. $polaczenie = $row['polaczenie '];
  9.  
  10. echo $polaczenie;
trueblue
A gdzie w zapytaniu jest data?
Chcesz pobrać pulę rekordów i wśród nich znaleźć najwcześniejszą datę czy pobrać jeden rekord z tą datą?

P.S. Poczytaj o aliasach w MySQL, bo obecnie stosujesz je w sposób niezgodny z ich przeznaczeniem (utrudniasz sobie pracę).
aras785
tutaj masz rozwiązania: https://stackoverflow.com/questions/3619030...recent-row-only

jeśli faktycznie zależy Ci na jednym polu typu datetime (polaczenie) to można tak:


  1. SELECT oczekujacy.id AS id,
  2. oczekujacy.pacjent AS pacjent,
  3. oczekujacy.telefon AS telefon,
  4. oczekujacy.lekarz AS lekarz,
  5. oczekujacy.kategoria AS kategoria,
  6. oczekujacy.pilne AS pilne,
  7. oczekujacy.dojazd AS dojazd,
  8. oczekujacy.dostepny AS dostepny,
  9. oczekujacy.informacje AS informacje,
  10. oczekujacy.wpisany AS wpisany,
  11. oczekujacy.archiwum AS archiwum,
  12. MAX(oczekujacytelefon.polaczenie) AS polaczenie
  13. FROM oczekujacy
  14. LEFT JOIN oczekujacytelefon ON oczekujacy.id = oczekujacytelefon.kto
  15.  
  16. WHERE archiwum = 0
  17. GROUP BY oczekujacy.id
  18. ORDER BY kategoria ASC, pilne DESC


i jakbyś chciał posortować po "polaczenie" to: ORDER BY MAX(oczekujacytelefon.polaczenie) ASC lub DESC
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-2024 Invision Power Services, Inc.