【发布时间】:2016-04-19 17:35:29
【问题描述】:
我有三张桌子(product、product_description、product_store_description)。
产品
这个表只有一行
+----------+---------------------+
|product_id| description |
+----------+---------------------+
| 1 |'regular description'|
+----------+---------------------+
产品描述
此表有零行
+----------+-----------+--------+
|product_id|description|language|
+----------+-----------+--------+
product_store_description
This table has zero rows
+----------+-----------+--------+--------+
|product_id|description|language|store_id|
+----------+-----------+--------+--------+
我想为所有表WHERE product.product_id = '1' 返回.description 列。
所以在这种情况下,我想要的输出是
$row = $result->fetch_assoc();
echo '<pre>';
var_dump($row);
echo '</pre>';
array (size=3)
'p_description' => string 'regular description' (length=19)
'pd_description' => string '' (length=0)
'psd_description' => string '' (length=0)
我已经尝试了我的 SQL 的许多变体,这就是目前的情况。
SELECT p.description AS p_description ,pd.description AS pd_description, psd.description AS psd_description FROM product AS p
RIGHT JOIN product_description AS pd ON(pd.product_id = p.product_id)
RIGHT JOIN product_store_description AS psd ON(psd.product_id = p.product_id)
WHERE p.product_id = '1'
AND pd.language = 'en'
AND psd.language = 'en' AND psd.store_id = 1;
这将返回零行
我搜索了导致我使用RIGHT JOIN 的答案,但这并没有解决我的问题。
我已经为示例表创建了一个 SQL fiddle HERE,不幸的是我还没有让任何人回答工作。
【问题讨论】:
-
描述字段必须具有相同的值? (表的架构非常糟糕和冗余)
-
@MTroy:看起来第二个表中的描述取决于语言,在第三个表中它可以根据商店进一步本地化。在不了解应用程序的情况下,您不应对设计进行价值判断。