Я хочу запросить некоторые данные таблицы таблицы mysql (jos_fieldsattach_values), которая заставляет мой мозг курить.mysql query в не нормированной таблице с соединением и подзапросами
Данная таблица имеет следующую структуру, которую я не могу изменить:
id | articleid | fieldsid | value
таблица хранит Новости даты. См.: http://sqlfiddle.com/#!2/8f9bf/1
Цель состоит в том, чтобы выводить каждую новость данных как объект или массив, который находится в ближайшие пять дней. Трудная часть этого заключается в том, что в таблице нет полей типа «дата новостей» или «субтитры», но сохраняет весь контент в поле «значения». Я могу определить тип данных по значению «fieldsid». F.e Даты всегда будут иметь fildsid в (4,7,10), или субтитры будут иметь поля в (14,15,16) и так далее. Это крайне неудобно, но, как сказано, я не могу изменить структуру таблицы или способ сохранения данных.
Мой первый шаг должен был получить статьи, которые имеют новости в течение следующих пяти дней
SELECT
articleid
FROM
`jos_fieldsattach_values`
WHERE
value > NOW() and value < NOW() + INTERVAL 5 DAY
Выход составляет: 316, 271, 271
Следующим шагом, где у меня есть проблемы:
SELECT a.value,b.title, b.id FROM
jos_fieldsattach_values as a
INNER JOIN
jos_content as b ON (a.articleid = b.id)
WHERE a.articleid in (271,216) and a.fieldsid in (14,15,16) and value<>''
Я присоединяюсь к jos_fieldsattach_values с jos_content, чтобы получить заголовки статей дальше. Я знаю из моего первого запроса, у которого есть новости, чтобы показать WHERE a.articleid in (216,271)
Где я пытаюсь упорядочить или запросить данные как объект. В псевдокоде:
WHERE
a.articleid in (271,216) // query rows with article ids only
AND
a.fieldsid in (14,15,16) as subtitle // if fieldsid is X it has to be a subtitle
AND
a.fieldsid in (4,7,10) as date // if fieldsid is Y it has to be a subtitle
Редактировать: Выход был бы полезен в качестве двумерного массива. Что-то вроде:
Array
(
[2013-08-09] => Array // fieldsid in (4,7,10, …)
(
[0] => News Title 1 // fieldsid in (1,2,3, …)
[1] => News Subtitle 1 // fieldsid in (14,15,16, …)
[2] => News Text 1 // fieldsid in (5,6,7, …)
)
[2013-08-08] => Array
(
[0] => News Title 2
[1] => News Subtitle 2
[2] => News Text 2
)
[2013-08-07] => Array
(
[0] => News Title 3
[1] => News Subtitle 3
[2] => News Text 3
)
)
Где дата первого массива, а второй массив имеет название данных. Каждый массив и его дочерний массив имеют одинаковый идентификатор статьи.
Благодарный для каждого подхода,
Toni
что ваш ожидаемый результат? – Aris
Когда вы описываете поле Assn –
Hi Aris & Peter, я отредактировал вопрос, чтобы показать ожидаемый результат. Поля сохраняются с стороннего компонента joomla, который я не могу изменить; (спасибо, toni –