2014-02-28 58 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