SQL查询-从一个表中选择全部,在另一个表中匹配记录

塞里·特纳(Ceri Turner)

我知道如何从一个表中选择值,以及在另一个表中是否具有匹配值

SELECT *
FROM me_cards AS c LEFT JOIN
     me_member_cards AS m
     ON m.cardID = c.id AND m.userID = 2 AND m.status = 'Collecting' LEFT JOIN
     me_decks AS d
     ON d.deckName = c.deckName 
WHERE c.deckName = 'Couples'
ORDER BY cardNumber

现在我遇到的问题是,如果第二个表中有多个记录,它将给出多个记录

我有两张桌子

  • me_cards-在以下位置有卡牌列表
  • me_member_cards-具有成员拥有的列表。

如果该卡在成员卡中多次出现,则查询返回所有行,我希望它返回所有卡,并且用户拥有该卡。当前用户拥有卡的ID,然后显示me_member_cards中的详细信息,如果没有,则显示为null

Table details
CREATE TABLE `me_cards` (
  `id` int(11) NOT NULL,
  `deckName` varchar(255) NOT NULL,
  `cardNumber` varchar(3) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `me_cards` (`id`, `deckName`, `cardNumber`) VALUES
(202, 'Couples', '01'),
(203, 'Couples', '02'),
(204, 'Couples', '03'),
(205, 'Couples', '04'),
(206, 'Couples', '05'),
(207, 'Couples', '06'),
(208, 'Couples', '07'),
(209, 'Couples', '08'),
(210, 'Couples', '09'),
(211, 'Couples', '10'),
(212, 'Couples', '11'),
(213, 'Couples', '12'),
(214, 'Couples', '13'),
(215, 'Couples', '14'),
(216, 'Couples', '15'),
(217, 'Couples', '16'),
(218, 'Couples', '17'),
(219, 'Couples', '18'),
(220, 'Couples', '19'),
(221, 'Couples', '20')

CREATE TABLE `me_decks` (
  `deckName` varchar(255) NOT NULL,
  `deckDescription` varchar(255) NOT NULL,
  `deckCategory` varchar(255) NOT NULL,
  `deckSubCat` varchar(255) NOT NULL,
  `deckType` varchar(255) NOT NULL,
  `deckFeatures` varchar(255) NOT NULL,
  `deckWorth` int(1) NOT NULL,
  `deckCardAmount` int(4) NOT NULL,
  `deckURLName` varchar(255) NOT NULL,
  `deckReleased` tinyint(4) NOT NULL,
  `deckOrder` int(5) NOT NULL,
  `deckCard` varchar(3) NOT NULL DEFAULT '01'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `me_decks`
--

INSERT INTO `me_decks` (`deckName`, `deckDescription`, `deckCategory`, `deckSubCat`, `deckType`, `deckFeatures`, `deckWorth`, `deckCardAmount`, `deckURLName`, `deckReleased`, `deckOrder`, `deckCard`) VALUES
('Couples', 'Senshi & Shitennout Pair', 'Puzzle', 'Manga', 'Puzzle', '', 1, 20, 'couples', 1, 999, '14');

CREATE TABLE `me_member_cards` (
  `id` int(11) NOT NULL,
  `userID` int(11) NOT NULL,
  `cardID` int(11) NOT NULL,
  `status` varchar(16) NOT NULL DEFAULT 'undefined'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `me_member_cards`
--

    INSERT INTO `me_member_cards` (`id`, `userID`, `cardID`, `status`, `id`, `deckName`, `cardNumber`) VALUES
    (29, 2, 212, 'Collecting', 212, 'Couples', '11'),
    (80, 2, 221, 'Collecting', 221, 'Couples', '20'),
    (81, 2, 221, 'Collecting', 221, 'Couples', '20'),
    (83, 2, 221, 'Collecting', 221, 'Couples', '20'),
    (101, 2, 221, 'Collecting', 221, 'Couples', '20');

我得到的是

ID卡牌名称卡号ID用户ID卡卡ID状态卡牌名称卡牌名称卡牌描述卡牌类别卡牌子类别卡牌类型卡牌特征卡牌价值卡牌数量卡牌数量URL名称卡牌释放的卡牌顺序卡牌
202情侣01 NULL NULL NULL NULL空对情侣Senshi和Shitennout情侣拼图漫画拼图1 20情侣1 999 14      
情侣02 NULL空NULL Shitennout配对拼图漫画拼图1 20对夫妇999 14      
204对03 NULL NULL NULL NULL NULL NULL夫妻Senshi和Shitennout对漫画难题1 20对夫妇999       
14205夫妇04 NULL NULL NULL NULL空对Senshi和Shitennout对拼图Manga难题1 20对1 999 14206对      
夫妇05 NULL NULL NULL NULL NULL双人Senshi和Shitennout双人拼图漫画拼图1 20对夫妇999 14       
14207夫妇06 NULL NULL NULL NULL夫妇Senshi和Shitennout对拼图Manga拼图1 20对夫妇1 999 14208对      
夫妇07 NULL NULL NULL NULL NULL双人Senshi和Shitennout双人拼图漫画拼图1 20对夫妇999 14      
209对夫妇08 NULL NULL NULL NULL夫妇Senshi和Shitennout对解漫画难题1 20对夫妇999 14211对      
夫妇09 NULL NULL NULL NULL NULL对Senshi和Shitennout配对拼图漫画拼图1 20对情侣999 14      
夫妇10 NULL NULL NULL NULL空对夫妇Senshi和Shitennout对解漫画难题1 20对夫妇1 999 14       
212对夫妇11 29 2 212收集对夫妇Senshi和Shitennout配对拼图漫画拼图1 20对情侣999 14      
12 NULL NULL NULL NULL NULL对Senshi和Shitennout对拼图Manga Puzzle 1 20对1 999 14214对      
13 NULL NULL NULL NULL NULL双人Senshi和Shitennout双人拼图漫画拼图1 20对夫妇999 14       
14215夫妇14 NULL NULL NULL NULL空对Senshi和Shitennout对拼图Manga难题1 20对夫妇1 999 14       
216对15 NULL NULL NULL NULL NULL NULL Senshi和Shitennout配对拼图漫画拼图1 20对情侣999 14      
217对16 NULL NULL NULL NULL NULL NULL夫妻Senshi和Shitennout对漫画难题1 20对夫妇999      
19 NULL NULL NULL NULL NULL双人Senshi和Shitennout双人拼图漫画拼图1 20对夫妇999 14      
17 NULL NULL NULL NULL NULL对Senshi和Shitennout配对拼图漫画拼图1 20对情侣999 14      
219对18 NULL NULL NULL NULL NULL夫妻Senshi和Shitennout对漫画拼图1 20对夫妇999      
夫妇20 83 2 221收集对夫妇Senshi和Shitennout配对拼图漫画拼图1 20对情侣999 14      
221对夫妇20 81 2 221收集夫妇Senshi和Shitennout对解漫画漫画1 20对夫妇999 14       
221对夫妇20 101 2 221收集对夫妇Senshi和Shitennout对解漫画漫画对1 20对夫妇999 14       
221对夫妇20 80 2 221收集对夫妇Senshi和Shitennout配对拼图漫画拼图1 20对情侣999 14

添加我想要的是

ID卡牌名称卡号ID用户ID卡卡ID状态卡牌名称卡牌名称卡牌描述卡牌类别卡牌子类别卡牌类型卡牌特征卡牌价值卡牌数量卡牌数量URL名称卡牌已发布的卡牌顺序卡牌森施&希特农偶数999 14205
夫妇04 NULL与空NULL Shitennout配对拼图漫画拼图1 20对夫妇999 14      
202一对01 NULL NULL NULL NULL空对情侣对拼图漫画拼图1 20对情侣      
情侣02 NULL空NULL Shitennout配对拼图漫画拼图1 20对夫妇999 14      
204对夫妇03 NULL NULL NULL NULL NULL NULL夫妇Senshi和Shitennout对漫画难题1 20对夫妇999       
14206夫妇05 NULL NULL NULL NULL NULL夫妇Senshi和Shitennout对拼图Manga难题1 20对夫妇1 999 14       
207对夫妇06 NULL NULL NULL NULL NULL双人Senshi和Shitennout双人拼图漫画拼图1 20对夫妇999 14      
208对07 NULL NULL NULL空NULL夫妻Senshi和Shitennout对漫画难题1 20对夫妇1 999 14210对       
209对夫妇08 NULL NULL NULL NULL NULL双人Senshi和Shitennout双人拼图漫画拼图1 20对夫妇999 14      
09 NULL NULL NULL NULL空对Sensen和Shitennout对拼图Manga难题1 20对1 999 14211对      
10 NULL NULL NULL NULL NULL NULL对Senshi和Shitennout配对拼图漫画拼图1 20对情侣999 14      
212对夫妇11 29 2 212收集对Senshi和Shitennout对解漫画拼图1 20对夫妇1 999 14        
14213夫妻12 NULL NULL NULL NULL NULL双人Senshi和Shitennout双人拼图漫画拼图1 20对夫妇999 14      
214对夫妇13空NULL NULL空空对Sensen和Shitennout对解漫画拼图1 20对夫妇1 999 14       
215对夫妇14对NULL NULL NULL NULL NULL对Senshi和Shitennout配对拼图漫画拼图1 20对情侣999 14      
216对15对NULL NULL NULL空NULL夫妻Senshi和Shitennout对漫画难题1 20对夫妇1 999 14218对      
18 NULL NULL NULL NULL NULL NULL对Senshi和Shitennout配对拼图漫画拼图1 20对情侣999 14      
夫妇16 NULL NULL NULL NULL NULL双人Senshi和Shitennout双人拼图漫画拼图1 20对夫妇999 14      
218对17 NULL NULL NULL NULL NULL情侣Senshi和Shitennout对漫画拼图1 20对1 999 14220对      
19 NULL NULL NULL NULL NULL夫妻Senshi和Shitennout对漫画拼图1 20对1 999 14221对      
夫妇20 81 2 221收集对Senshi&Shitennout配对拼图漫画拼图1 20对夫妇999 14      

我最终想要做的就是将所有卡片都放在卡座中,如果用户有卡片,则显示它,如果没有卡片,则显示一个占位符

托斯滕·凯特纳

您想知道卡片组中的每张卡,是否有特定用户拥有此卡,如果有,请显示me_member_cards详细信息。问题是用户可以多次拥有一张卡,但是您仍然只希望显示该卡的一个结果行。因此 me_member_cards在这种情况下,您必须决定要显示哪些数据。这是一个示例,其中显示status每张卡的最大数量

select *
from me_decks d
join me_cards c on c.deckname = d.deckname
left join
(
  select cardid, max(status) as max_status
  from me_member_cards
  where userid = 2 
  and status = 'Collecting'
  group by cardid
) mc on mc.cardid = c.id
where d.deckname = 'Couples';

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL查询以基于另一个表中的列值从一个表中选择

来自分类Dev

在一个查询中从两个表中选择一个记录,并从另一个表中选择多个记录

来自分类Dev

SQL查询从一个表中选择不在另一表中的行

来自分类Dev

SQL从一个表中选择项目,从另一个表中选择条件

来自分类Dev

在单个查询中从一个表中选择SUM + COUNT,从另一个表中选择COUNT

来自分类Dev

MySQL查询-从一个表中选择,从另一个表中计数

来自分类Dev

MySQL从一个表中查询最新记录,但从另一个表中查询顺序

来自分类Dev

在oracle中查询以从一个表中获取多个记录并输入另一个表

来自分类Dev

从一个表中选择与SQL的另一个表中的相同值相关联的唯一行对

来自分类Dev

Oracle SQL从一个表中选择与另一个表相关的数据

来自分类Dev

从多个表中选择,插入另一个表 Oracle SQL 查询

来自分类Dev

从一个表中选择数据,然后基于SQL Server中的另一个表重命名列

来自分类Dev

MySQL项目设计-根据另一个选择查询中的行有条件地从一个表中选择

来自分类Dev

SQL甲骨文| 当它们与另一个表匹配时,如何从一个表中删除记录?

来自分类Dev

SQL查询以从一个表中选择,该表要么不在另一个表中,要么不在该表中具有特定值

来自分类Dev

从选择查询中的另一个表中选择列

来自分类Dev

SQL如何从另一个表中不存在的表中选择

来自分类Dev

SQL Server:插入到表中,从另一个表中选择

来自分类Dev

在主表中查找与SQL Server中另一个表中的记录匹配的记录

来自分类Dev

SQL:如何从另一个表中的一个表中选择不同的值?

来自分类Dev

SQL:如何从另一个表中的一个表中选择不同的值?

来自分类Dev

从另一个表中选择一个查询的结果

来自分类Dev

从另一个表中选择数据SQL Select查询

来自分类Dev

从另一个表中选择和拆分列值的 Sql 查询

来自分类Dev

SQL查询以从一个表中选择所有行,并从表2中选择行

来自分类Dev

如何从一个表中选择许多行并插入到另一个表中特定行的特定JSONB字段中?但是在单个原始SQL查询中

来自分类Dev

Laravel 4从子查询中的另一个表中选择列

来自分类Dev

SQL-根据另一个表中给出的匹配值在一个表中进行选择

来自分类Dev

SQL 查询从另一个表中选择 1 个表和 1 个列(与表 1 中的名称相同)中的所有内容

Related 相关文章

  1. 1

    SQL查询以基于另一个表中的列值从一个表中选择

  2. 2

    在一个查询中从两个表中选择一个记录,并从另一个表中选择多个记录

  3. 3

    SQL查询从一个表中选择不在另一表中的行

  4. 4

    SQL从一个表中选择项目,从另一个表中选择条件

  5. 5

    在单个查询中从一个表中选择SUM + COUNT,从另一个表中选择COUNT

  6. 6

    MySQL查询-从一个表中选择,从另一个表中计数

  7. 7

    MySQL从一个表中查询最新记录,但从另一个表中查询顺序

  8. 8

    在oracle中查询以从一个表中获取多个记录并输入另一个表

  9. 9

    从一个表中选择与SQL的另一个表中的相同值相关联的唯一行对

  10. 10

    Oracle SQL从一个表中选择与另一个表相关的数据

  11. 11

    从多个表中选择,插入另一个表 Oracle SQL 查询

  12. 12

    从一个表中选择数据,然后基于SQL Server中的另一个表重命名列

  13. 13

    MySQL项目设计-根据另一个选择查询中的行有条件地从一个表中选择

  14. 14

    SQL甲骨文| 当它们与另一个表匹配时,如何从一个表中删除记录?

  15. 15

    SQL查询以从一个表中选择,该表要么不在另一个表中,要么不在该表中具有特定值

  16. 16

    从选择查询中的另一个表中选择列

  17. 17

    SQL如何从另一个表中不存在的表中选择

  18. 18

    SQL Server:插入到表中,从另一个表中选择

  19. 19

    在主表中查找与SQL Server中另一个表中的记录匹配的记录

  20. 20

    SQL:如何从另一个表中的一个表中选择不同的值?

  21. 21

    SQL:如何从另一个表中的一个表中选择不同的值?

  22. 22

    从另一个表中选择一个查询的结果

  23. 23

    从另一个表中选择数据SQL Select查询

  24. 24

    从另一个表中选择和拆分列值的 Sql 查询

  25. 25

    SQL查询以从一个表中选择所有行,并从表2中选择行

  26. 26

    如何从一个表中选择许多行并插入到另一个表中特定行的特定JSONB字段中?但是在单个原始SQL查询中

  27. 27

    Laravel 4从子查询中的另一个表中选择列

  28. 28

    SQL-根据另一个表中给出的匹配值在一个表中进行选择

  29. 29

    SQL 查询从另一个表中选择 1 个表和 1 个列(与表 1 中的名称相同)中的所有内容

热门标签

归档