我知道如何从一个表中选择值,以及在另一个表中是否具有匹配值
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
现在我遇到的问题是,如果第二个表中有多个记录,它将给出多个记录
我有两张桌子
如果该卡在成员卡中多次出现,则查询返回所有行,我希望它返回所有卡,并且用户拥有该卡。当前用户拥有卡的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] 删除。
我来说两句