Не могу склеить эти 2 запроса
SELECT q.*
FROM `subscribers` AS sub, `questions` AS q
WHERE (sub.id = 1 AND q.to = sub.id_subscriber)
ORDER BY `time` DESC
LIMIT 20
SELECT d.*
FROM `subscribers` AS sub, `discussion` AS d
WHERE (sub.id = 1 AND d.to = sub.id_subscriber)
ORDER BY `time` DESC
LIMIT 20
Делаю так
(
SELECT q.`id`, q.`text`, q.`reply`, q.`time`, q.`from`, q.`to`, q.`ip`, q.`is_anonum`, 'null' AS q.`question_id`
FROM `subscribers` AS sub, `questions` AS q
WHERE (sub.id = 1 AND q.to = sub.id_subscriber)
ORDER BY `time` DESC
LIMIT 20
)UNION (
SELECT d.`id`, d.`text`, d.`reply`, d.`time`, d.`from`, d.`to`, d.`ip`, d.`is_anonum`, 'null' AS d.`likes`, 'null' AS d.`discussion`, 'null' AS d.`salt`
FROM `subscribers` AS sub, `discussion` AS d
WHERE (sub.id = 1 AND d.to = sub.id_subscriber)
ORDER BY `time` DESC
LIMIT 20
)
ORDER BY `time` DESC
Но меня посылают куда по дальше, вот дамп если что
CREATE TABLE `discussion` (
`id` int(11) NOT NULL auto_increment,
`question_id` int(11) NOT NULL,
`text` TEXT NOT NULL, -- Вопрос
`reply` TEXT NOT NULL,
`time` int(11) NOT NULL,
`from` int(11) NOT NULL,
`to` int(11) NOT NULL,
`ip` varchar(25) NOT NULL default '',
`is_anonum` TINYINT(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=cp1251;
CREATE TABLE `questions` (
`id` int(11) NOT NULL auto_increment,
`text` TEXT NOT NULL,
`reply` TEXT NOT NULL,
`time` int(11) NOT NULL,
`likes` int(8) NOT NULL default '0',
`discussion` int(8) NOT NULL default '0',
`salt` char(3) NOT NULL default '',
`from` int(11) NOT NULL,
`to` int(11) NOT NULL,
`ip` varchar(25) NOT NULL default '',
`is_anonum` TINYINT(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=cp1251;
CREATE TABLE `subscribers` (
`id` int(11) NOT NULL, -- id юзера
`id_subscriber` int(11) NOT NULL, -- На кого подписан юзер
`time` int(11) NOT NULL
) ENGINE = MyISAM DEFAULT CHARSET=cp1251;
Но меня посылают куда по дальше
Вам наверняка показывается сообщение об ошибке. Ваше высказывание абсолютно не информативно.
Попробую помочь.
Запись вот такого рода:
'null' AS q.question_id
неверна и приводит к ошибке. Вероятнее всего, вы перепутали значения местами
и на самом деле хотели написать вот так (забыв подключить таблицу в условии выборки):
q.`question_id` AS 'null'
Но даже если исправить все ошибки такого рода, у вас есть еще одна:
Использовать UNION можно только тогда, когда
все запросы возвращают одинаковое количество столбцов,
которые содержат совместимые типы данных.
У вас же в первом запросе возвращается на два столбца меньше.
Исправьте эти ошибки и запрос заработает.
Для того, чтобы "склеить" два запроса оператором UNION
нужно, чтобы количество столбцов в обоих запросах было одинаковым. Также должны совпадать типы столбцов.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Добрый день! Возникла проблема с сортировкой полей, не знаю как ее решить
Проблема в том, что при получении текста с БД я получаю экраннированные кавычки
Например пользователь лайкает видеоУ видео есть метки например: США, война, Сирия