-- phpMyAdmin SQL Dump
-- version 2.11.3deb1ubuntu1.1
-- [url]http://www.phpmyadmin.net[/url]
--
-- Хост: localhost
-- Время создания: Дек 31 2008 г., 19:38
-- Версия сервера: 5.0.51
-- Версия PHP: 5.2.4-2ubuntu5.4
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- База данных: `eleanor`
--
-- --------------------------------------------------------
--
-- Структура таблицы `el_news`
--
CREATE TABLE IF NOT EXISTS `el_news` (
`id` int(11) NOT NULL auto_increment,
`url` varchar(100) NOT NULL,
`cid` int(11) NOT NULL default '0',
`status` tinyint(1) NOT NULL default '1',
`def_lang` tinyint(1) unsigned NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `url` (`url`),
KEY `cid` (`cid`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=7;
--
-- Дамп данных таблицы `el_news`
--
INSERT INTO `el_news` (`id`, `url`, `cid`, `status`, `def_lang`) VALUES
(1, 'url_1', 1, 1, 0),
(2, 'url_2', 2, 1, 0),
(3, 'url_3', 1, 1, 0),
(4, 'url_4', 3, 1, 0),
(5, 'url_5', 2, 1, 0),
(6, 'url_6', 3, 1, 1);
-- --------------------------------------------------------
--
-- Структура таблицы `el_news_lang`
--
CREATE TABLE IF NOT EXISTS `el_news_lang` (
`id` int(11) NOT NULL,
`language` varchar(10) NOT NULL,
`title` varchar(200) NOT NULL,
`text` text NOT NULL,
KEY `language` (`language`),
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
--
-- Дамп данных таблицы `el_news_lang`
--
INSERT INTO `el_news_lang` (`id`, `language`, `title`, `text`) VALUES
(1, 'ru', 'Новость 1', 'Это новость 1'),
(1, 'en', 'Story 1', 'This is story 1'),
(2, 'ru', 'Новость 2', 'Эт новость 2'),
(3, 'ru', 'Новость 3', 'Это новость 3'),
(4, 'ru', 'новость 4', 'Это новость 4'),
(5, 'en', 'Новость 5', 'Это новость 5'),
(5, 'ru', 'Новость 5', 'Это новость 5 русская'),
(6, 'ru', 'Новость 6', 'Это новость 6');
Запрос:
SELECT *
FROM el_news AS n
INNER JOIN el_news_lang AS nl
USING ( `id` )
WHERE n.status =1 -- ну это понятно
HAVING IF( n.def_lang =1, nl.language = 'ru', nl.language = 'en' ) -- это поясню отдельно
результат:
id url cid status def_lang language title text
1 url_1 1 1 0 en Story 1 This is story 1
5 url_5 2 1 0 en Новость 5 Это новость 5
6 url_6 3 1 1 ru Новость 6 Это новость 6
И поясню запрос. В табличке el_news я добавил еще один флаг def_lang. Он указывает, отображать новость всегда на языке по умолчанию или же с учетом языка. Данный запрос подойдет для пункта (1)
Для пункта 2 я пока не придумал... размышляю.
Попутных вопрос:
а что делать, если к примеру дефолтный язык русский, новость размещена только на украинском, а сайт работает с русским/украинским/английским?