mysql使用来自另一个表的关系从表中订购数据

马克西姆·楚普罗

我有2个桌子
商品:有关商品的信息。项目具有“常规”或“数字”类型。

id | name | itemtype

CREATE TABLE IF NOT EXISTS `wares` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `itemtype` enum('usual','digital') NOT NULL DEFAULT 'usual',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

   INSERT INTO `wares` (`id`, `name`, `itemtype`) VALUES
    (1, 'ware1', 'usual'),
    (2, 'ware2', 'usual'),
    (3, 'ware3', 'usual'),
    (4, 'ware4', 'usual'),
    (5, 'ware5', 'usual'),
    (6, 'ware6', 'digital'),
    (7, 'ware7', 'usual'),
    (8, 'ware8', 'digital'),
    (9, 'ware9', 'usual'),
    (10, 'ware10', 'digital');

关系:表与餐具物品之间的关系某些类型"usual"为的项目与类型为的项目有关"digital"并非所有项目都链接。

id_usualware | id_digitalware

CREATE TABLE IF NOT EXISTS `relations` (
  `id_usualware` int(11) NOT NULL,
  `id_digitalware` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `relations` (`id_usualware`, `id_digitalware`) VALUES
(1, 6),
(4, 8),
(7, 10);

http://sqlfiddle.com/#!2/2831a/13

我需要使用下面的关系排序从表商品中选择数据如果类型的项与item有关系,则此数字项将跟随此结果。我如何使用MySQL做到这一点?"usual""digital""usual"

id | name  | itemtype
 1 | ware1 | 'usual'  
 6 | ware6 | 'digital'
 2 | ware2 | 'usual'
 3 | ware3 | 'usual'
 4 | ware4 | 'usual'
 8 | ware8 | 'digital'
 5 | ware5 | 'usual'
 7 | ware7 | 'usual'
 10| ware10| 'digital'
 9 | ware9 | 'usual'
戈登·利诺夫(Gordon Linoff)

以下内容应ids以正确的顺序获取:

select coalesce(r.id_digitalware, w.id)
from wares w left join
     relations r
     on r.id_digitalware = w.id
order by coalesce(r.id_usualware, w.id),
         (w.itemtype = 'usual') desc;

要获取完整的行,您需要另外一个join

select w2.*
from wares w left join
     relations r
     on r.id_digitalware = w.id left join
     wares w2
     on w2.id = coalesce(r.id_digitalware, w.id)
order by coalesce(r.id_usualware, w.id),
         (w.itemtype = 'usual') desc;

是SQL Fiddle。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

sqlite3仅当其他4个列匹配时才使用来自另一个表的数据更新表

来自分类Dev

kdb使用来自另一个表的数据更新整个列

来自分类Dev

mysql使用来自另一个表的关系逐列从表中订购数据

来自分类Dev

mysql使用来自另一个表的关系从表中订购数据

来自分类Dev

使用SQLite使用来自另一个表的值更新列?

来自分类Dev

使用来自另一个表的数据将列添加到表

来自分类Dev

使用VBA使用来自另一个表的值更新访问表

来自分类Dev

使用来自另一个表的值的总和更新表

来自分类Dev

如何使用来自另一个表Microsoft Access的查询更新表

来自分类Dev

使用来自另一个表的信息更新SQL Server中的表

来自分类Dev

使用来自另一个表的值更新行时的Postgres错误

来自分类Dev

使用来自另一个表的汇总值更新一个表的多个列

来自分类Dev

如何使用linq从另一个表中订购具有匹配ID的数据?

来自分类Dev

SQL-使用来自另一个表的信息更新表

来自分类Dev

Oracle SQL Function使用来自另一个架构的数据表示表或视图不存在

来自分类Dev

使用来自另一个表的时间向MySQL表填充虚拟数据

来自分类Dev

kdb使用来自另一个表的数据更新整个列

来自分类Dev

使用来自asp.net中另一个表的值生成下拉列表。VB MVC 4

来自分类Dev

使用where条件将表中的数据插入MySQL中的另一个表

来自分类Dev

mysql使用来自另一个表的关系按表从列中排序数据

来自分类Dev

使用来自另一个表的值更新PHP MYSQL中的表

来自分类Dev

使用来自另一个表的数据更新特定行

来自分类Dev

插入后触发使用来自另一个表的数据更新同一表

来自分类Dev

使用来自查询的另一个表的结果更新表变量

来自分类Dev

如何设置自动完成以显示来自 laravel 中另一个表的数据(单对多关系)

来自分类Dev

从 Mysql 中另一个表中的列中订购一个表

来自分类Dev

使用来自另一个表的值的 SQL 更新表

来自分类Dev

使用来自另一个表的外键将数据插入或更新到表中

来自分类Dev

使用来自另一个工作表的 500 多个列标题填充工作表的单元格

Related 相关文章

  1. 1

    sqlite3仅当其他4个列匹配时才使用来自另一个表的数据更新表

  2. 2

    kdb使用来自另一个表的数据更新整个列

  3. 3

    mysql使用来自另一个表的关系逐列从表中订购数据

  4. 4

    mysql使用来自另一个表的关系从表中订购数据

  5. 5

    使用SQLite使用来自另一个表的值更新列?

  6. 6

    使用来自另一个表的数据将列添加到表

  7. 7

    使用VBA使用来自另一个表的值更新访问表

  8. 8

    使用来自另一个表的值的总和更新表

  9. 9

    如何使用来自另一个表Microsoft Access的查询更新表

  10. 10

    使用来自另一个表的信息更新SQL Server中的表

  11. 11

    使用来自另一个表的值更新行时的Postgres错误

  12. 12

    使用来自另一个表的汇总值更新一个表的多个列

  13. 13

    如何使用linq从另一个表中订购具有匹配ID的数据?

  14. 14

    SQL-使用来自另一个表的信息更新表

  15. 15

    Oracle SQL Function使用来自另一个架构的数据表示表或视图不存在

  16. 16

    使用来自另一个表的时间向MySQL表填充虚拟数据

  17. 17

    kdb使用来自另一个表的数据更新整个列

  18. 18

    使用来自asp.net中另一个表的值生成下拉列表。VB MVC 4

  19. 19

    使用where条件将表中的数据插入MySQL中的另一个表

  20. 20

    mysql使用来自另一个表的关系按表从列中排序数据

  21. 21

    使用来自另一个表的值更新PHP MYSQL中的表

  22. 22

    使用来自另一个表的数据更新特定行

  23. 23

    插入后触发使用来自另一个表的数据更新同一表

  24. 24

    使用来自查询的另一个表的结果更新表变量

  25. 25

    如何设置自动完成以显示来自 laravel 中另一个表的数据(单对多关系)

  26. 26

    从 Mysql 中另一个表中的列中订购一个表

  27. 27

    使用来自另一个表的值的 SQL 更新表

  28. 28

    使用来自另一个表的外键将数据插入或更新到表中

  29. 29

    使用来自另一个工作表的 500 多个列标题填充工作表的单元格

热门标签

归档