Есть 2 таблицы, таблица меню и таблица подменю. вот их структура. [sql]SQLyog Enterprise - MySQL GUI v6.14 MySQL - 5.1.41 : Database - project_1 ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; create database if not exists `porject_1`; USE `porject_1`; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*Table structure for table `menu` */ DROP TABLE IF EXISTS `menu`; CREATE TABLE `menu` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` char(40) NOT NULL, `type` int(11) NOT NULL, `bg` tinytext, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1027 DEFAULT CHARSET=latin1; /*Data for the table `menu` */ insert into `menu`(`id`,`name`,`type`,`bg`) values (1001,'contact',2,'bg_page1.jpg'),(1000,'bio',2,'dark-abstract-wide-wallpaper-1920x1200-001.jp'),(21,'advertisement',1,''),(19,'weddings',1,''),(16,'fashion',1,NULL),(25,'video',1,''),(1,'home',2,'rand'),(15,'beauty',1,''); /*Table structure for table `menu_subcats` */ DROP TABLE IF EXISTS `menu_subcats`; CREATE TABLE `menu_subcats` ( `id` int(11) NOT NULL AUTO_INCREMENT, `menu_name` char(40) DEFAULT NULL, `value` char(40) DEFAULT NULL, `type` int(1) DEFAULT NULL, `bg` char(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=69 DEFAULT CHARSET=latin1; /*Data for the table `menu_subcats` */ insert into `menu_subcats`(`id`,`menu_name`,`value`,`type`,`bg`) values (1,'beauty','beauty',1,NULL),(2,'beauty','fantasi',1,NULL),(3,'fashion','fashion',1,NULL),(4,'fashion','creative',1,NULL),(5,'weddings','weddings',1,NULL),(6,'weddings','hairs',1,NULL),(7,'advertisement','advertisement',1,NULL),(8,'advertisement','celebrities',1,NULL),(9,'advertisement','editorial',1,NULL); /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; [/sql] Как выбрать имена из обоих таблиц так, чтобы не было повторов?
ещё раз, какие записи должен вернуть mysql? [sql] SELECT menu.id, menu.name, menu.type, menu_subcats.value FROM menu INNER JOIN menu_subcats ON (menu.name = menu_subcats.menu_name); [/sql] Код (Text): +----+---------------+------+---------------+ | id | name | type | value | +----+---------------+------+---------------+ | 15 | beauty | 1 | beauty | | 15 | beauty | 1 | fantasi | | 16 | fashion | 1 | fashion | | 16 | fashion | 1 | creative | | 19 | weddings | 1 | weddings | | 19 | weddings | 1 | hairs | | 21 | advertisement | 1 | advertisement | | 21 | advertisement | 1 | celebrities | | 21 | advertisement | 1 | editorial | +----+---------------+------+---------------+ 9 rows in set (0.00 sec) Оно? [sql]SELECT menu.* FROM menu INNER JOIN menu_subcats ON (menu.name = menu_subcats.menu_name) GROUP BY name;[/sql] Код (Text): +----+---------------+------+------+ | id | name | type | bg | +----+---------------+------+------+ | 21 | advertisement | 1 | | | 15 | beauty | 1 | | | 16 | fashion | 1 | NULL | | 19 | weddings | 1 | | +----+---------------+------+------+ 4 rows in set (0.00 sec) porject_1 -> project_1 menu_subcats (меню подкошек?)
Нет, чучуть не то, в запросах нет раздела видео. Нужно выбрать все значения из menu_subcats.value и menu.name так чтобы не было повторений
все это прекрасно можно (и нужно) сделать одной таблицей. твой метод - избыточен, к тому же не обеспечивает целостность данных. делай в одной таблице. добавь поле parent_id, если его значение null, значит это верхний уровень меню, если не нулл, значит это субменю. и сделай foreign key по этому полю, который будет вязать таблицу на саму себя. тогда и твой вопрос сам собой решиться.
select * from menu LEFT JOIN `menu_subcats` ON `menu_subcats`.`menu_name` = `menu`.`name` но сравнение по name это ппц какой-то, id зачем нужен тогда?
Странно как-то это всё... [sql]SELECT DISTINCT name FROM (SELECT name FROM menu UNION SELECT value FROM menu_subcats) as t1;[/sql] Код (Text): +---------------+ | name | +---------------+ | contact | | bio | | advertisement | | weddings | | fashion | | video | | home | | beauty | | fantasi | | creative | | hairs | | celebrities | | editorial | +---------------+ 13 rows in set (0.00 sec)