Имя: Пароль:
IT
Веб-мастеринг
Mysql PDOException with message 'SQLSTATE[23000]: Integrity constraint violation
0 Fragster
 
гуру
25.01.17
16:52
Пытаюсь сделать "срез последних" запросом к мускулю через PDO (табличка маленькая, так что оптимизация пока не нужна), текст запроса такой:

SELECT
    DATEDIFF(stat.date, CURDATE()) as days,
    stat.*
FROM (
    SELECT ip, MAX( date ) AS date
    FROM stat
    GROUP BY ip
) AS max_date
INNER JOIN stat ON max_date.ip = stat.ip
AND max_date.date = stat.date
ORDER BY stat.date DESC

в phpmyadmin запрос нормально отрабатывает, через PDO
$statement = $DB->prepare($query);
$statement->execute();

выдает
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'ip' cannot be null'

как переделать запрос, чтобы отрабатывал нормально?
1 Волшебник
 
модератор
25.01.17
16:55
Ошибка явно идёт на другой запрос, который меняет таблицу
2 Ёпрст
 
25.01.17
16:58
(0) хз, ну задай алиясы для таблички stat
3 Fragster
 
гуру
25.01.17
17:00
(1) ты чертовски прав!
4 Волшебник
 
модератор
25.01.17
17:05
(3) :)
5 Fragster
 
гуру
25.01.17
17:12
ничоси, что бывает:

SELECT
    @rownum := @rownum + 1 as rowNumber,
    DATEDIFF(stat.date, CURDATE()) as days,
    stat.*
FROM (
    SELECT ip, MAX( date ) AS date
    FROM stat
    GROUP BY ip
) AS max_date
INNER JOIN stat ON max_date.ip = stat.ip
AND max_date.date = stat.date
cross join (select @rownum := 0) r
ORDER BY stat.date DESC
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn