【问题标题】:many things in one query. is it possible?一个查询中有很多东西。可能吗?
【发布时间】:2010-06-30 16:00:17
【问题描述】:

我有三张桌子

菜单

+--id---ident---+
|--1----menu_1--|

menus_data

+--id---id_parent---name---------id_lang--+
|--1----1-----------menu_eng------1-------|
|--2----1-----------menu_rus------2-------|
+--3----1-----------menu_arm------3-------+

语言

+--id---name--------+
|--1----english-----|
|--2----russian-----|
|--3----armenian----|

第二个表存储有关菜单的数据(所有语言的名称),即。第二个表的 id_parent 是第一个表的 id。

假设我添加了一种 id=4 的新语言。现在我需要为所有菜单提供默认值(必须等于id_lang = 1 值),所以我需要在menus_data 表中添加行

|--4----1-----------menu_eng------4-------|

我必须使用menus 表中的所有菜单。

我可以通过树查询来做到这一点 -

  1. menus 表中查找所有菜单的列表
  2. 找到每个元素的默认值
  3. menus_content 表中添加具有该值的行

但也许可以在一个查询中完成?

谢谢

【问题讨论】:

  • 为什么需要id和id_lang?它们是否总是相同的值?
  • Menus_Content 表在哪里?
  • id_lang 是另一个 languages 表中的 id,我存储所有语言的列表。
  • 您能否详细说明您要完成的工作?总体而言,可能有更好的方法可以满足您的需求。同样,语言是您存储语言的位置,但为什么menus_data 表中存在“menu_eng”或“menu_rus”?
  • @Syom:您是否有可能是menus 记录,而在menus_data 表中没有 有支持记录?如果答案是“否”,则没有理由执行您列为第 1 步的操作...

标签: php mysql phpmyadmin


【解决方案1】:

我认为这是可能的。应该是这样的:

insert into `menus_data` select null, `id_parent`, `name`, 4 from `menus_data` where `id_lang` = 1;

我没有检查过,所以语法可能有点不对。该查询还假定每个菜单的 menus_data 中都有一条 id_lang=1 的记录。

在此处了解有关此类查询的更多信息:http://dev.mysql.com/doc/refman/5.1/en/insert-select.html

【讨论】:

  • 我喜欢这种新型查询(对我来说是新的;)谢谢
猜你喜欢
  • 1970-01-01
  • 2018-12-13
  • 1970-01-01
  • 1970-01-01
  • 2013-08-12
  • 2012-07-19
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多