Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2010, 15:09   #1
Bendebej
Пользователь
 
Регистрация: 21.01.2010
Сообщений: 63
По умолчанию Составной запрос, как правильно составить?

Как создать "двойной запрос", так чтобы сначала выполнялось одно условие, потом из подходящих под это условие полей снова выбирались поля
к примеру - мне надо из определенных выбранных текстов(где sectionid=5 and catid=43) выбрать последние по дате публикации (publish_up=(SELECT MAX(publish_up) FROM jos_content))


а запрос через and объединяет запросы в один строгий


FROM `jos_content`
WHERE sectionid=5 and catid=43
and publish_up=(SELECT MAX(publish_up) FROM jos_content)
";


грубо говоря, хочется написать
FROM `jos_content`
WHERE sectionid=5 and catid=43
WHERE publish_up=(SELECT MAX(publish_up) FROM jos_content)
";
но синтаксически это неверно
Bendebej вне форума Ответить с цитированием
Старый 26.02.2010, 15:41   #2
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Код:
SELECT MAX(publish_up) 
FROM jos_content
WHERE sectionid=5 AND catid=43
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 26.02.2010, 16:47   #3
Bendebej
Пользователь
 
Регистрация: 21.01.2010
Сообщений: 63
По умолчанию

Цитата:
Сообщение от quit Посмотреть сообщение
Код:
SELECT MAX(publish_up) 
FROM jos_content
WHERE sectionid=5 AND catid=43
странно,но выдает пустую страницу, хотя значения в таблице нужные точно есть
Bendebej вне форума Ответить с цитированием
Старый 26.02.2010, 16:48   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Код:
SELECT *
FROM jos_content
WHERE sectionid=5 AND catid=43
    and publish_id in (SELECT MAX(publish_up) 
                              FROM jos_content
                              WHERE sectionid=5 AND catid=43)
soleil@mmc вне форума Ответить с цитированием
Старый 26.02.2010, 17:21   #5
Bendebej
Пользователь
 
Регистрация: 21.01.2010
Сообщений: 63
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
Код:
SELECT *
FROM jos_content
WHERE sectionid=5 AND catid=43
    and publish_id in (SELECT MAX(publish_up) 
                              FROM jos_content
                              WHERE sectionid=5 AND catid=43)
так дает ошибку в строке где уже идет PHP код--
Код:
while($row = mysql_fetch_array($res))
и так тоже

Код:
SELECT *
FROM jos_content
WHERE sectionid=5 AND catid=43
 in (SELECT MAX(publish_up) 
                              FROM jos_content
                              WHERE sectionid=5 AND catid=43)
и так

Код:
SELECT MAX(publish_up)
FROM jos_content
WHERE sectionid=5 AND catid=43
 in (SELECT*   
     FROM jos_content
     WHERE sectionid=5 AND catid=43)
Bendebej вне форума Ответить с цитированием
Старый 26.02.2010, 17:23   #6
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Ошибку в студию
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 26.02.2010, 17:25   #7
Bendebej
Пользователь
 
Регистрация: 21.01.2010
Сообщений: 63
По умолчанию

Цитата:
Сообщение от quit Посмотреть сообщение
Код:
SELECT MAX(publish_up) 
FROM jos_content
WHERE sectionid=5 AND catid=43
может к дате(типу данных datetime) все таки не подходит функция MAX?
Bendebej вне форума Ответить с цитированием
Старый 26.02.2010, 17:30   #8
Bendebej
Пользователь
 
Регистрация: 21.01.2010
Сообщений: 63
По умолчанию

Цитата:
Сообщение от quit Посмотреть сообщение
Ошибку в студию

Вот к примеру такой запрос работает

Код:
$query = "SELECT *
 FROM `jos_content`
 WHERE publish_up=(SELECT MAX(publish_up) FROM jos_content) ";
и такой тоже

Код:
$query = "SELECT *
 FROM `jos_content`
 WHERE sectionid=5 AND catid=43 ";
так что дело не в PHP тут
Bendebej вне форума Ответить с цитированием
Старый 26.02.2010, 17:45   #9
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

запросы приведенный мной и soleil@mmc верные, да и текст ошибки ты так и не показал
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 26.02.2010, 17:54   #10
Bendebej
Пользователь
 
Регистрация: 21.01.2010
Сообщений: 63
По умолчанию

Цитата:
Сообщение от quit Посмотреть сообщение
запросы приведенный мной и soleil@mmc верные, да и текст ошибки ты так и не показал
была ошибка в PHP я ее исправил
теперь вывод работает
но выдает одно только пустое значение


Все, спасибо! разобрался
первый вариант дает лишь одну запись из поля
второй как мне и нужно, дает все поле
только там опечатка была, надо publish_up
Код:
SELECT *
FROM jos_content
WHERE sectionid =5
AND catid =43
AND publish_up
IN (

SELECT MAX( publish_up )
FROM jos_content
WHERE sectionid =5
AND catid =43
)

Последний раз редактировалось Bendebej; 26.02.2010 в 23:53.
Bendebej вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить прогамму, отысивающую наименьший общий составной делитель натуральных чисел N и M. Paskal Frontier Помощь студентам 7 16.12.2014 14:01
Как создать правильно запрос .... EugeneIsmatulin SQL, базы данных 15 28.05.2009 09:20
Как правильно составить маску? Pavell PHP 1 05.01.2009 15:58
как правильно составить формулу в Excel? Вики Помощь студентам 2 01.02.2008 12:20