PROhvost
Новичок
Как правильно построить запрос в БД для моего случая
Есть три таблицы:
Написал код:
В итоге получается так:
Ессентуки
Виктория
Железноводск
Горный воздух
Кисловодск
40 Лет Победы
Пятигорск
Ленинские скалы
Пятигорск
Солнечный
Пятигорск
Салют
А нужно:
Ессентуки
Виктория
Железноводск
Горный воздух
Кисловодск
40 Лет Победы
Пятигорск
Ленинские скалы
Солнечный
Салют
Что можно сделать, ума не хватает, прошу помощи.
Есть три таблицы:
PHP:
--
-- Структура таблицы `san_data`
--
CREATE TABLE `san_data` (
`id` bigint(20) NOT NULL auto_increment,
`name` char(255) character set utf8 collate utf8_unicode_ci default '',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `san_dataname` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=8 ;
--
-- Дамп данных таблицы `san_data`
--
INSERT INTO `san_data` VALUES (1, 'Виктория');
INSERT INTO `san_data` VALUES (2, 'Ленинские скалы');
INSERT INTO `san_data` VALUES (3, '40 Лет Победы');
INSERT INTO `san_data` VALUES (4, 'Горный воздух');
INSERT INTO `san_data` VALUES (5, 'Солнечный');
INSERT INTO `san_data` VALUES (6, 'Салют');
INSERT INTO `san_data` VALUES (7, 'Геолог Казахстана');
--
-- Структура таблицы `san_metaclass1`
--
CREATE TABLE `san_metaclass1` (
`id` bigint(20) NOT NULL auto_increment,
`data_id` int(11) NOT NULL default '0',
`field1` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `field1` (`field1`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=7 ;
--
-- Дамп данных таблицы `san_metaclass1`
--
INSERT INTO `san_metaclass1` VALUES (1, 1, 4);
INSERT INTO `san_metaclass1` VALUES (2, 2, 1);
INSERT INTO `san_metaclass1` VALUES (3, 3, 2);
INSERT INTO `san_metaclass1` VALUES (4, 4, 3);
INSERT INTO `san_metaclass1` VALUES (5, 5, 1);
INSERT INTO `san_metaclass1` VALUES (6, 6, 1);
--
-- Структура таблицы `san_referencevalue`
--
CREATE TABLE `san_referencevalue` (
`id` bigint(20) NOT NULL auto_increment,
`value` char(255) character set utf8 collate utf8_unicode_ci default '',
`reference_id` int(11) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `value` (`value`,`reference_id`),
KEY `san_referencevaluevalue` (`value`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;
--
-- Дамп данных таблицы `san_referencevalue`
--
INSERT INTO `san_referencevalue` VALUES (1, 'Пятигорск', 1);
INSERT INTO `san_referencevalue` VALUES (2, 'Кисловодск', 1);
INSERT INTO `san_referencevalue` VALUES (3, 'Железноводск', 1);
INSERT INTO `san_referencevalue` VALUES (4, 'Ессентуки', 1);
PHP:
$query = "SELECT * FROM san_metaclass1 LEFT JOIN san_referencevalue ON san_metaclass1.field1=san_referencevalue.id ORDER BY value";
$metaclass = mysql_query($query) or die("Query failed : " . mysql_error());
while($row = mysql_fetch_assoc($metaclass)){
extract($row);
echo ''.$value.'<br />';
$query = "SELECT * FROM san_data WHERE id='$data_id'";
$data = mysql_query($query) or die("Query failed : " . mysql_error());
$line = mysql_fetch_assoc($data);
extract($line);
echo '<b>'.$name.'</b><br />';
}
Ессентуки
Виктория
Железноводск
Горный воздух
Кисловодск
40 Лет Победы
Пятигорск
Ленинские скалы
Пятигорск
Солнечный
Пятигорск
Салют
А нужно:
Ессентуки
Виктория
Железноводск
Горный воздух
Кисловодск
40 Лет Победы
Пятигорск
Ленинские скалы
Солнечный
Салют
Что можно сделать, ума не хватает, прошу помощи.