Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как обойти ограничение на использования LIMIT во вложенных запросах?
 
 автор: Keyses   (05.04.2011 в 05:36)   письмо автору
 
 

требуется вот что
SELECT *
FROM (sn) 
WHERE (
   UNIX_TIMESTAMP((SELECT end FROM sn WHERE end >= "2011-06-26" ORDER BY end ASC LIMIT 1))
   -
   UNIX_TIMESTAMP((SELECT start FROM sn WHERE start >= "2011-07-02" ORDER BY start ASC LIMIT 1)) 
   <= 86400
)

требуется выдернуть из базы два значения и сравнить их, но поскольку в подзапросах не работает лимит, то получается полная ахинея и непонятно как это реализовать. Если у кого есть идеи - был бы очень благодарен...

  Ответить  
 
 автор: cheops   (05.04.2011 в 11:55)   письмо автору
 
   для: Keyses   (05.04.2011 в 05:36)
 

Вообще говоря лучше дамп приводить в таких случаях, иначе проверить даже синтаксис запроса тяжело. Возможно, следующий запрос подойдет, но нужно проверять.
SELECT
  bas.id,
  bas.start,
  bas.end,
  bas.price,
  bas.p_id
FROM
    sn AS bas
  LEFT JOIN
    (SELECT UNIX_TIMESTAMP(end) AS unxtm, end 
     FROM sn 
     ORDER BY end ASC
     LIMIT 1) AS fst
  ON (fst.end = bas.end AND fst.end >= "2011-06-26")
  LEFT JOIN
    (SELECT UNIX_TIMESTAMP(start) AS unxtm, start
     FROM sn 
     ORDER BY start ASC
     LIMIT 1) AS snd
  ON (snd.start = bas.start AND snd.start >= "2011-07-02")
WHERE
  fst.unxtm - snd.unxtm <= 86400

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования