需要一个检查单元格的 mysql case 语句

Need a mysql case statement that checks a cell

我目前有 2 个 table,假设 Table_A 包含数百个三明治及其相关信息和图片,Table_B 包含特定的三明治组。例如:

Table_A 将有 4 列:

Table_B 将有助于对三明治进行分类:

然后我有一个 if/while 代码可以加载特色三明治图像。

我遇到的问题是,在某些情况下,Table_A 中会有一个新的 sandwich_type,它在 [=80] 中还没有自己的 sandwich_category 行=],在这种情况下,我想让代码自动从 Table_A 最近输入的三明治中提取图像。换句话说,如果 featured_sandwich_id 还没有在 Table_B 中设置,我希望 select 语句自动从中提取最近发布的三明治的 ID 和图像Table_A.

我会尝试更具体并写出我希望代码通过的过程:

这是我当前的代码:

    $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 JOINORDER BYDESC

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_Asandwich_type 的那两个表 Table_Bsandwich_category , 正确的?但是Table_Bsandwich_category的内容是字符串。那么这意味着 Table Asandwich_type 是一个字符串?

为什么 Table_Bprimary 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