2014-02-28 26 views
0

我有以下嵌套查询:如何访问一个嵌套的MySQL查询内部的行

SELECT * FROM mrp_type 
WHERE mrp_type.mrp_type_id 
    NOT IN ( 
    SELECT DISTINCT Z.mrp_type_id FROM ( 
     SELECT mrp_type.* , COUNT(*) as rooms_booked FROM mrp_type 
      WHERE bookings_mrp.date >= '2014-02-27' 
      GROUP BY mrp_type.mrp_type_id, mrp_type.num_rooms, bookings_mrp.date 
       HAVING mrp_type.num_rooms - COUNT(*) <= 0) as Z) 

现在从查询,你可以看到,使用COUNT()作为条件,但它现在显示在结果集中,因为它在嵌套查询中。如何在查询运行后从我的PHP代码访问Count()?我可以把它放在一个变量中,或将该列传递给外部选择或其他东西?

+0

你要什么查询呢? –

回答

0

您可以简单地获取实际响应的行数并将其减去表的总行数。

编辑:

编辑您的如下查询:

SELECT * , (select count(*) from mrp_type) as total FROM mrp_type 
WHERE ... 

在这里,你得到表mrp_type行总数

然后使用mysql_num_rows(php.net/fr/mysql_num_rows)根据您的查询结果,您将获得所选行数。

之后,你只需要做:

$rooms_booked = $row['total'] - mysql_num_rows($mysql_result); 
+0

这就是我想要做的,但我想出如何做到这一点?你能给我一个代码示例 – user1227793

0

查询计数的计数器表,并把它放在FROM子句

选择
        mrp_type *,计数器.rooms_booked
FROM
        mrp_type,
       (SELECT
                mrp_type。*,作为rooms_booked FROM mrp_type
        WHERE
            COUNT(*)     bookings_mrp.date> = '2014年2月27日'
        GROUP BY
                mrp_type.mrp_type_id,mrp_type.num_rooms,bookings_mrp.date
        HAVING
                mrp_type。num_rooms - COUNT(*)< = 0)作为计数器
WHERE
        mrp_type.mrp_type_id NOT IN
               (SELECT DISTINCT Z.mrp_type_id
                FROM
                       (SELECT
                                mrp_type。*,COUNT(*)作为rooms_booked
                        FROM
                                mrp_type
                        WHERE
                                bookings_mrp.date> = '2014年2月27日'
                        GROUP BY
                                mrp_type.mrp_type_id,mrp_type.num_rooms,bookings_mrp。日期
                        HAVING
                                mrp_type.num_rooms - COUNT(*)< = 0
               )作为Z)
和mrp_type.mrp_type_id = counter.mrp_type_id