Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: помогите составить sql запрос

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
imedia
Отправлено: 13 Мая, 2016 - 18:38:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 192
Дата рег-ции: Июль 2015  


Помог: 0 раз(а)




Мне нужно значения всех полей из таблицы где определенный ай-ди-юзер при этом ту строку таблицы в которой наибольшая дата (datetime-format) среди полей с этим юзером

Я попробовал вот так но увы
$query = "SELECT MAX(date_time_added) FROM customers_basket WHERE customer_id = '".$value['customers_id']." ";
 
 Top
3d_killer
Отправлено: 13 Мая, 2016 - 19:19:25
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




ORDER BY date_time_added DESC LIMIT 1
без всяких MAX
 
My status
 Top
imedia
Отправлено: 13 Мая, 2016 - 20:36:38
Post Id



Частый гость


Покинул форум
Сообщений всего: 192
Дата рег-ции: Июль 2015  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT * FROM customers_basket WHERE customer_id = '".$value['customers_id']." ORDER BY date_time_added DESC LIMIT 1";
  3.  


Query failed : 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 ''65591 ORDER BY date_time_added DESC LIMIT 1' at line 1
 
 Top
Строитель Модератор
Отправлено: 13 Мая, 2016 - 20:49:52
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 74 раз(а)




imedia, вы пропустили апостроф
PHP:
скопировать код в буфер обмена
  1. $query = "SELECT * FROM customers_basket WHERE customer_id = '".$value['customers_id']."' ORDER BY date_time_added DESC LIMIT 1";
 
 Top
imedia
Отправлено: 13 Мая, 2016 - 23:39:19
Post Id



Частый гость


Покинул форум
Сообщений всего: 192
Дата рег-ции: Июль 2015  


Помог: 0 раз(а)




у меня в таблице 1 запись с определенным временем
Я пишу так
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($arr as $key=> $value){
  3.  
  4. //пересмотреть базу таблицу customers_basket и найти самое последнее добавление //товара по этому юзеру
  5. $query = "SELECT * FROM customers_basket WHERE customers_id = '".$value['customers_id']."' ORDER BY date_time_added DESC LIMIT 1";
  6.     $result = mysql_query($query) or die("Query failed : " . mysql_error());
  7. while ($row[] = mysql_fetch_assoc($result)) ;
  8. echo "<pre>";
  9. if($row['date_time_added']='2016-05-13 17:21:47'){
  10. print($row['date_time_added']);
  11. }
  12. echo "</pre>";
  13.  

Повторюсь с этим временем одна запись, почему я получаю 40 таких выводов print($row['date_time_added']);
Как указать что вывести все поля из таблицы при том что уникальны должны быть значения поля customer_id и уникальность (при этом выбирать только ту строку в которой поле date_time_added максимальное по этому уникальному кастомеру)

(Отредактировано автором: 13 Мая, 2016 - 23:50:54)

 
 Top
Строитель Модератор
Отправлено: 14 Мая, 2016 - 00:07:10
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 74 раз(а)




imedia пишет:
почему я получаю 40 таких выводов
Вероятно потому, что у вас в массиве $arr хранится сорок пар ключ/значение. Для получения одной записи из бд не нужно юзать цикл вообще, а у вас в коде циклов два. Попробуйте как-то так
PHP:
скопировать код в буфер обмена
  1. $query = "SELECT * FROM customers_basket WHERE customers_id = '".$value['customers_id']."' ORDER BY date_time_added DESC LIMIT 1";
  2. $result = mysql_query($query) or die('Query failed : '. mysql_error());
  3. $row = mysql_fetch_assoc($result);
  4.  
  5. echo $row['date_time_added'];

(Отредактировано автором: 14 Мая, 2016 - 00:21:05)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB