Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]ASC oraz DESC w jednym zapytaniu SQL, optymalizacja
tenloginjestzaje...
post 4.05.2016, 20:47:55
Post #1





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

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


Witam
czy można zoptymalizować ten kod, zrobić jedno zapytanie SQL?
  1. $querydesc = mysql_query("SELECT * FROM `rewievs` WHERE `tag` = '$tag' AND `ver` = '1' ORDER BY `id` DESC");
  2. $rowdesc = mysql_fetch_assoc($querydesc);
  3. $descdata = date('j.m.Y', $rowdesc['time']);
  4. $queryasc = mysql_query("SELECT * FROM `rewievs` WHERE `tag` = '$tag' AND `ver` = '1' ORDER BY `id` ASC");
  5. $posts = mysql_num_rows($queryasc);
  6. $rowasc = mysql_fetch_assoc($queryasc);


Pozdrawiam

Ps. próbuje z JOIN, ale nie pobiera.

  1. $query = mysql_query("SELECT * FROM `rewievs` INNER JOIN `answer` WHERE `tag` LIKE '$tag' ON `tag` LIKE '$tag'");



udało mi się połączyć dwie tabele jednak nadal mam problem jak zrobić tutaj tag = '$tag'

  1. $query = mysql_query("SELECT * FROM `rewievs` INNER JOIN `answer` ON answer.tag = rewievs.tag");


Ten post edytował tenloginjestzajety 4.05.2016, 20:16:18


--------------------
Nigdy nie zapominam kliknąć "pomógł". Zastosowanie na stronie [prosze nie spamuj]
Go to the top of the page
+Quote Post
nospor
post 4.05.2016, 21:18:41
Post #2





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6297
Dołączył: 27.12.2004




Jesli chcesz pobrac tylko czas i jesli dla malego id odpowiada maly czas a dla duzego id odpowiada duzy czas, to wystarczy min() i max()

Jesli nie to UNION


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
tenloginjestzaje...
post 4.05.2016, 21:42:24
Post #3





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

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


  1. <?php
  2. $query = mysql_query("SELECT `time` FROM `answer` WHERE `tag` = '$tag' UNION SELECT `time` FROM `rewievs` WHERE `tag` = '$tag'");
  3. while($row = mysql_fetch_assoc($query)){
  4. $data = date('j.m.Y', $row['time']);
  5. echo $data.'<br />';
  6. }
  7. ?>


działa tylko nie wiem czy można wrzucić wyniki do tablicy ( daty ) i wybrać najstarszą oraz najnowszą.

Ten post edytował tenloginjestzajety 4.05.2016, 21:50:18


--------------------
Nigdy nie zapominam kliknąć "pomógł". Zastosowanie na stronie [prosze nie spamuj]
Go to the top of the page
+Quote Post
nospor
post 5.05.2016, 09:57:22
Post #4





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6297
Dołączył: 27.12.2004




Jedno zapytanie miales sortowac asc drugie desc...teraz tego nie robisz wiec co oczekujesz?? Dodatkowo kazde zapytanie ma pobierac tylko jeden rekord - LIMIT 1.

Poza tym widze ze pobierasz tylko TIME wiec czemu nie uzyjesz poprostu jednego zapytania z MIN i MAX jak ci na poczatku pisalem?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 28.04.2024 - 17:22