- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试连接两个表,但遇到了一些问题。这是主表,packs
media
用于存储packs
的图像。每个包可以有 0 个或多个图像。当包中有图像时,其中一个图像会将 is_default
字段设置为 1
以指示要显示的主图像。
我想获得所有包和每个包的一张图片。如果没有图像,则只是一个简单的 NULL
,否则获取 is_default
的图像。
这是我的查询。
SELECT
pack.*,
( SELECT media.src FROM packs pack LEFT JOIN packs_media media ON pack.id = media.pack_id WHERE media.is_default = 1 GROUP BY media.id LIMIT 1 ) AS image
FROM packs pack
LEFT JOIN packs_media ON media.pack_id = pack.id
GROUP BY pack.id
ORDER BY pack.id DESC
我一共有三包,只有一包有一些图片。查询返回 3 个结果。问题在于所有三个结果都具有相同的 image
,而只有一个应该而另外两个的 image
字段应为 null/empty。
有什么办法只用一个查询就可以做到这一点吗?我想避免在循环中查询 media
表。
谢谢
最佳答案
我最近遇到了类似的问题,老实说,它有一个非常非常棒的解决方案。乍一看,一个明显的尝试是添加 WHERE
条件 is_default = 1
.然而,如果我们这样做,在没有图像的地方,条件将不满足,这意味着它应该返回 NULL
的地方。 , 它只是跳过那一行。
但是,如果将此条件添加到 LEFT JOIN
部分,就像我所做的那样,它就像一个魅力。这是因为如果 LEFT JOIN
满足条件,它返回图像,如果不满足,它返回 NULL
, 根据 LEFT JOIN
的定义.
所以结果应该是:
SELECT pack.*, media.src
FROM packs pack
LEFT JOIN media
ON media.pack_id = pack.id
AND media.is_default = 1
而且我认为您不应该添加 GROUP BY,它只会把事情搞砸。
如果即使没有 is_default
也想解决问题...好吧,这是一个更难解决的问题,但我认为我有一个解决方案,它不会陷入长行的条件和子查询中。可悲的是,我觉得如果没有子查询就无法解决这个问题。我的想法是不选择 media.is_default
的项目。等于 1
, 而哪个具有最高的 media.is_default
.如下:
SELECT pack.*, media.src
FROM packs pack
LEFT JOIN media
ON media.pack_id = pack.id
AND media.id =
(SELECT m.id FROM media m
WHERE m.pack_id = media.pack_id
ORDER BY m.is_default DESC
LIMIT 1
)
说明:它是这样工作的:我们全部按 is_default
订购。按降序排列,并返回外部查询以仅使用当前的 pack_id
(我希望它能这样工作。)如果有一个 1,它显然将是第一个项目,否则它将是一个随机项目,很可能是 ID 顺序中的第一个。你只需获取该元素并使用它。我无法保证它是否有效。尝试使用 IN
而不是 =
作为可能的错误修复。
但是,我不建议使用此解决方案。我宁愿改变以前的逻辑来避免这个问题(例如,当用户将媒体添加到空包时,该图片上的 is_default = 1
)。
关于php - MySQL JOINS : Select one row from child table is condition is met, 否则为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38936268/
我的收藏具有以下结构 { _id:1, parent_id:0 } { _id:2, parent_id:1 } { _id:3, parent_id:1 } { _id:4, par
到目前为止,我已经尝试过获取该对象的所有子对象,但它只带来了两个子对象。不都是 child 的 child 。我如何获取所有内容并循环获取特定名称对象 Transform[] objChild = g
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我有一个如下表 好吧,在这个表中每个用户都有一个父用户,那么如果我们选择一个用户,那么它的 id 、子代 id 和子代子代 id 应该作为数组返回。我需要一个查询来获取 Rails 中的这些值,而不使
我需要以下代码的帮助: HTML: process process 在点击 td[class=process] 时,我需要 input[name=dat
好的,所以我从中获得了一个 PHP,该 PHP 由依赖于手头动态情况的切换循环传播(我认为)。现在,当我添加一个复选框时,我希望能够使 div 中的第一个复选框具有顶部边框和侧面,没有底部。下面的只有
我正在使用 Swift 和 Sprite Kit。我有一个名为 MrNode 的 SKNode,它有多个 SKSpriteNodes 和 SKNode 子节点。一些SKNode有子节点,而这些子节点也
对不起,这个标题太俗了,但我真的不确定如何解释这个,我是新一代的 SQL 技能由于事件记录模式而退化的人之一! 基本上我在 PostgreSQL 中有三个表 客户端(一个客户端有很多 map ) -
我有这样的简单表格: 编号 parent_id 创建于 具有父/子关系...如果一行是子行,则它有一个 parent_id,否则它的 parent_id 为 0。 现在我想选择所有没有子项(因此本身)
所以我有这样的结构: 我的问题是:如何从每个主题中删除 ID 为 3Q41X2tKUMUmiDjXL1BJon70l8n2 的每个字段。我正在考虑这样的事情: admin.database().ref
这个问题在这里已经有了答案: Change opacity on all elements except hovered one (1 个回答) 关闭 5 个月前。 因此,当鼠标悬停在 child
我需要在 Delphi 5 中创建一个 QuickReport,其布局如下: +================ | Report Header +================ +========
假设我有这样的 html: Some more detailed code.... 我想知道如何在CSS中使用“A
我有一个使用 flexbox 的类似表格的布局: +--------------+---------------+-----------------+---------------+ | 1
我有一个关联,其中 user has_many user_items 和 user_items has_many user_item_images。与一个已经退出的用户。我可以创建一个新的 user_
我想选择无序列表中的前两个列表项。我可以这样选择第一项: ul li:nth-child(1) a { background: none repeat scroll 0 0 beige; }
ul li:first-child a { border-radius: 5px 5px 0 0; } ul li:last-child a { border-radius: 0 0 5p
我有一个这样的表:
或者这些术语用于指代同一事物? 我正在尝试在我的 Win32 应用程序中实现一些显示位图图像的自定义按钮。一个教程指出我应该使用 CreateWindow() 创建子窗口。 但是,我已经从另一个关于创
我想在 jquery 中获取我的 svg 的 id,我尝试了这个 jquery,但它是未定义的。 $(event.target).children('svg').attr("id") Target.e
我是一名优秀的程序员,十分优秀!