需要一个检查单元格的 mysql case 语句
Need a mysql case statement that checks a cell
我目前有 2 个 table,假设 Table_A 包含数百个三明治及其相关信息和图片,Table_B 包含特定的三明治组。例如:
Table_A 将有 4 列:
- 第 1 列 "id" 即 auto-incrementing
- 第 2 列 "sandwich_name" 包含肉丸三明治 1、肉丸三明治 2、肉丸三明治 3、火鸡三明治 1 等
- 第 3 列 "sandwich type",在本例中为肉丸三明治、肉丸三明治、肉丸三明治、火鸡三明治
- 第 4 列 "sandwich_picture" 包含图片的 link 列。
Table_B 将有助于对三明治进行分类:
- 名为 "sandwich_category" 的第 1 列对应于 Table_A 中的第 3 列,包含标题 "Meatball Sandwich"、"Turkey Sandwich"
第 2 列 "featured_sandwich_id" 我可以在其中 select 来自 Table_A 的三明治的 ID,我有一个 SELECT 语句可以提取其特色图片:
SELECT featured_sandwich_id FROM Table_B WHERE sandwich_category='Meatball Sandwich' AND featured_sandwich_id != 0
然后我有一个 if/while 代码可以加载特色三明治图像。
我遇到的问题是,在某些情况下,Table_A 中会有一个新的 sandwich_type,它在 [=80] 中还没有自己的 sandwich_category 行=],在这种情况下,我想让代码自动从 Table_A 最近输入的三明治中提取图像。换句话说,如果 featured_sandwich_id 还没有在 Table_B 中设置,我希望 select 语句自动从中提取最近发布的三明治的 ID 和图像Table_A.
我会尝试更具体并写出我希望代码通过的过程:
- 1 Auto-created div 每种 sandwich_category。
- 2:Div 包含 Table_B 的 sandwich_category 名称并检查 featured_sandwich_id 是否已在 Table_B 中设置。
- 3:如果设置了featured_sandwich_id,则拉取Table_A中三明治id关联的图片。
- 4: 如果 featured_sandwich_id 没有被设置(或者如果由于某种原因 sandwich_category 还没有在 Table_B 中详细说明),使用 sandwich_category 名称和来自所述 sandwich_category 的最新三明治的图像,并将它们填充到上面的 div 中。
这是我当前的代码:
$QUERY = "(
SELECT Table_A.sandwich_picture, Table_A.sandwich_type, Table_B.featured_sandwich_id
FROM Table_A
LEFT JOIN Table_B
ON (Table_A.id = Table_B.featured_sandwich_id)
WHERE (Table_A.sandwich_type = 'Meatball Sandwich')
LIMIT 1)"
上面的 LEFT JOIN 有一个 'Meatball Sandwich' 和所有其他 sandwich_type 的图像,但它从来不是关联的 featured_sandwich_id.
的图像
将上面的语句切换为 RIGHT JOIN 始终具有 featured_sandwich_id 的图像 'Meatball Sandwich' 和任何其他 sandwich_type,但在 featured_sandwich_id 的情况下尚未在 table 中设置,它会提取 0 个结果。
这里以剩下的PHP为例:
... while($query_results){
echo '<div class="sandwich_category">
<img src="$query_results['sandwich_picture']">
<br>
<p class="sandwich_category_name">';
echo $query_results['sandwich_category']; // This is the category name
echo '</p>
</div>';
}
据我所知,为了节省资源,最好压缩成一个语句,但是我想不出正确的连接类型。
知道如何实现吗?
尝试 LEFT JOIN
、ORDER BY
和 DESC
:
SELECT b.sandwich_category, b.featured_sandwich_id, a.id, a.sandwich_name, a.sandwich_type, a.sandwich_picture
FROM Table_B b
LEFT JOIN Table_A a ON b.sandwich_category = a.sandwich_type
WHERE b.sandwich_category = 'Meatball Sandwich'
AND b.featured_sandwich_id != 0 ORDER BY a.id DESC
我只想澄清的是,您想 link 将 Table_A
的 sandwich_type
的那两个表 Table_B
的 sandwich_category
, 正确的?但是Table_B
的sandwich_category
的内容是字符串。那么这意味着 Table A
的 sandwich_type
是一个字符串?
为什么 Table_B
的 primary id
不只是 link 他们呢?它会更快更可靠。
更新:
SELECT b.sandwich_category, b.featured_sandwich_id, a.id, a.sandwich_name, a.sandwich_type, a.sandwich_picture
FROM Table_B b
LEFT JOIN Table_A a ON b.featured_sandwich_id = a.id
AND b.sandwich_category = a.sandwich_type
WHERE b.sandwich_category = 'Meatball Sandwich' AND b.featured_sandwich_id != 0 ORDER BY a.id DESC
我目前有 2 个 table,假设 Table_A 包含数百个三明治及其相关信息和图片,Table_B 包含特定的三明治组。例如:
Table_A 将有 4 列:
- 第 1 列 "id" 即 auto-incrementing
- 第 2 列 "sandwich_name" 包含肉丸三明治 1、肉丸三明治 2、肉丸三明治 3、火鸡三明治 1 等
- 第 3 列 "sandwich type",在本例中为肉丸三明治、肉丸三明治、肉丸三明治、火鸡三明治
- 第 4 列 "sandwich_picture" 包含图片的 link 列。
Table_B 将有助于对三明治进行分类:
- 名为 "sandwich_category" 的第 1 列对应于 Table_A 中的第 3 列,包含标题 "Meatball Sandwich"、"Turkey Sandwich"
第 2 列 "featured_sandwich_id" 我可以在其中 select 来自 Table_A 的三明治的 ID,我有一个 SELECT 语句可以提取其特色图片:
SELECT featured_sandwich_id FROM Table_B WHERE sandwich_category='Meatball Sandwich' AND featured_sandwich_id != 0
然后我有一个 if/while 代码可以加载特色三明治图像。
我遇到的问题是,在某些情况下,Table_A 中会有一个新的 sandwich_type,它在 [=80] 中还没有自己的 sandwich_category 行=],在这种情况下,我想让代码自动从 Table_A 最近输入的三明治中提取图像。换句话说,如果 featured_sandwich_id 还没有在 Table_B 中设置,我希望 select 语句自动从中提取最近发布的三明治的 ID 和图像Table_A.
我会尝试更具体并写出我希望代码通过的过程:
- 1 Auto-created div 每种 sandwich_category。
- 2:Div 包含 Table_B 的 sandwich_category 名称并检查 featured_sandwich_id 是否已在 Table_B 中设置。
- 3:如果设置了featured_sandwich_id,则拉取Table_A中三明治id关联的图片。
- 4: 如果 featured_sandwich_id 没有被设置(或者如果由于某种原因 sandwich_category 还没有在 Table_B 中详细说明),使用 sandwich_category 名称和来自所述 sandwich_category 的最新三明治的图像,并将它们填充到上面的 div 中。
这是我当前的代码:
$QUERY = "(
SELECT Table_A.sandwich_picture, Table_A.sandwich_type, Table_B.featured_sandwich_id
FROM Table_A
LEFT JOIN Table_B
ON (Table_A.id = Table_B.featured_sandwich_id)
WHERE (Table_A.sandwich_type = 'Meatball Sandwich')
LIMIT 1)"
上面的 LEFT JOIN 有一个 'Meatball Sandwich' 和所有其他 sandwich_type 的图像,但它从来不是关联的 featured_sandwich_id.
的图像将上面的语句切换为 RIGHT JOIN 始终具有 featured_sandwich_id 的图像 'Meatball Sandwich' 和任何其他 sandwich_type,但在 featured_sandwich_id 的情况下尚未在 table 中设置,它会提取 0 个结果。
这里以剩下的PHP为例:
... while($query_results){
echo '<div class="sandwich_category">
<img src="$query_results['sandwich_picture']">
<br>
<p class="sandwich_category_name">';
echo $query_results['sandwich_category']; // This is the category name
echo '</p>
</div>';
}
据我所知,为了节省资源,最好压缩成一个语句,但是我想不出正确的连接类型。
知道如何实现吗?
尝试 LEFT JOIN
、ORDER BY
和 DESC
:
SELECT b.sandwich_category, b.featured_sandwich_id, a.id, a.sandwich_name, a.sandwich_type, a.sandwich_picture
FROM Table_B b
LEFT JOIN Table_A a ON b.sandwich_category = a.sandwich_type
WHERE b.sandwich_category = 'Meatball Sandwich'
AND b.featured_sandwich_id != 0 ORDER BY a.id DESC
我只想澄清的是,您想 link 将 Table_A
的 sandwich_type
的那两个表 Table_B
的 sandwich_category
, 正确的?但是Table_B
的sandwich_category
的内容是字符串。那么这意味着 Table A
的 sandwich_type
是一个字符串?
为什么 Table_B
的 primary id
不只是 link 他们呢?它会更快更可靠。
更新:
SELECT b.sandwich_category, b.featured_sandwich_id, a.id, a.sandwich_name, a.sandwich_type, a.sandwich_picture
FROM Table_B b
LEFT JOIN Table_A a ON b.featured_sandwich_id = a.id
AND b.sandwich_category = a.sandwich_type
WHERE b.sandwich_category = 'Meatball Sandwich' AND b.featured_sandwich_id != 0 ORDER BY a.id DESC