Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询(左联接+条件)在第一个条目上未显示正确的结果_Sql_Left Join_Sql Limit - Fatal编程技术网

SQL查询(左联接+条件)在第一个条目上未显示正确的结果

SQL查询(左联接+条件)在第一个条目上未显示正确的结果,sql,left-join,sql-limit,Sql,Left Join,Sql Limit,我的SQL查询有问题。我试图查询数据库以从3个不同的表中获取数据,其中应用了一个表上的条件。 在第二个条目中,它正确地显示了结果,但在第一个条目中,它没有显示应用条件的表的结果 这是我的疑问: SELECT `".PRODUCTS."`.*, `".CATEGORIES."`.*, `q_prices`.* FROM `".PRODUCTS."` LEFT JOIN `".CATEGORIES."` ON `".PRODUCTS."`.`categ

我的SQL查询有问题。我试图查询数据库以从3个不同的表中获取数据,其中应用了一个表上的条件。 在第二个条目中,它正确地显示了结果,但在第一个条目中,它没有显示应用条件的表的结果

这是我的疑问:

SELECT
    `".PRODUCTS."`.*,
    `".CATEGORIES."`.*,
    `q_prices`.*
FROM
    `".PRODUCTS."`
LEFT JOIN
    `".CATEGORIES."`
ON
    `".PRODUCTS."`.`category_id` = `".CATEGORIES."`.`category_id`
INNER JOIN(
    SELECT
        `".PRICES."`.*
        MAX(`".PRICES."`.`price_modified`) modified
    FROM
        `".PRICES."`
    GROUP BY
        `".PRICES."`.`product_id`
    ) `q_prices`
ON
    `".PRODUCTS."`.`product_id` = `q_prices`.`product_id`
这就是它的回报:

    Array
(
[0] => stdClass Object
    (
        [product_id] => 1
        [product_name] => Test product
        [product_alias] => test-product
        [category_id] => 1
        [product_created] => 2013-07-29 11:36:51
        [product_modified] => 2013-07-29 11:36:51
        [category_name] => Test categorie
        [category_alias] => test-categorie
        [category_parent] => wonenplaza.nl
        [category_created] => 2013-07-29 11:39:29
        [category_modified] => 2013-07-29 11:39:29
        [price_id] => 1
        [price_amount] => 25.00
        [price_tax] => 21
        [price_created] => 2013-07-29 11:38:18
        [price_modified] => 2013-07-29 11:38:18
        [modified] => 2013-07-29 11:38:52
    )

[1] => stdClass Object
    (
        [product_id] => 2
        [product_name] => Priva Blue ID
        [product_alias] => test-product2
        [category_id] => 1
        [product_created] => 2013-07-29 12:18:54
        [product_modified] => 2013-07-29 12:18:54
        [category_name] => Test categorie
        [category_alias] => test-categorie
        [category_parent] => wonenplaza.nl
        [category_created] => 2013-07-29 11:39:29
        [category_modified] => 2013-07-29 11:39:29
        [price_id] => 4
        [price_amount] => 20.00
        [price_tax] => 21
        [price_created] => 2013-07-29 12:19:11
        [price_modified] => 2013-07-29 12:19:11
        [modified] => 2013-07-29 13:30:05
    )
)
我认为这与左连接查询中指定的限制有关,但我不确定这一点。我不知道如何查询数据库以获得这些结果


提前感谢:

这是如何获取与最新值关联的其他数据

select f1, f2, etc
from sometables
join (
select f1, max(datefield) maxdt
from table1
where whatever
group by f1
) temp on table1.datefield = maxdt
and table1.f1 = temp.f1
etc

把这个原则应用到你的桌子上,你就可以开始了。顺便说一句,您需要的是一个内部联接,而不是派生表的左联接。

您的子查询会查找所有价格中最新的,而不管产品是什么,这不是您所需要的。修复它并不简单,但您可以将嵌套查询重写为左连接,这似乎可以简化事情;很抱歉,您的表已稍微重命名,以使SQLfiddle满意

选择“.PRODUCTS.”、“.CATEGORIES.”、“.q\U prices.”* 来自`。产品` 左键连接“”类别` 关于`.PRODUCTS.`.category\u id`=`.CATEGORIES.`.category\u id`` 左键连接“价格”。“q_价格”` 在'q'U prices'上。'product\U id`=`.PRODUCTS.`.'product\U id`` 左键连接`。价格。``虚拟` 在`dummy`.`product\u id`=`.PRODUCTS.`.`product\u id`` 和'q_prices'。'price_modified'<'dummy'。'price_modified'` 其中`dummy`.`price_modified`为空;
.

我可以问一下您上次加入时想要达到什么目的吗?查找每种商品的最新价格?是的,我想保留价格的历史记录,但在这个查询中,我试图获取产品的最新可用价格。没有DESC limit这样的东西。DESC与ORDER BY相关。您真的有没有没有没有产品ID的产品?在我看来,您试图加入一个字段products.product_ID,该字段的主键为空值。这将导致一个有效的category联接,但找不到这样的价格记录。我想第二张唱片就是你想要的。因此,要么将where product_ID不为null添加到where子句,要么修复数据,使其不为null(可能是空格)?存在于products.product_IDCorrect中,已更新第一篇文章。虽然我的问题仍然存在。谢谢Dan,我想这让我走得更远了!我更新了开篇文章,以匹配我现在代码中的内容。它显示了两种结果,但显示的顺序相反。我需要最新的价格,而不是最旧的。我不知道我是否正确理解了你的解决方案,你能回顾一下吗?你只做了部分。您使用产品id连接到派生表,但修改的价格不等于最大值。