2011-05-11 8 views
12

heres मेरी कोड से जुड़ा हुआ:दूसरे से गिनती जहां आईडी के

$sql = mysql_query("select c.name, c.address, c.postcode, c.dob, c.mobile, c.email, 
        count(select * from bookings where b.id_customer = c.id) as purchased, count(select * from bookings where b.the_date > $now) as remaining, 
        from customers as c, bookings as b 
        where b.id_customer = c.id 
        order by c.name asc"); 

आप देख सकते हैं मुझे क्या करने की कोशिश कर रहा हूँ, लेकिन यकीन नहीं कैसे इस क्वेरी ठीक से लिखने के लिए im।

यहाँ त्रुटि मैं मिलता है:

चेतावनी: mysql_fetch_assoc(): आपूर्ति की तर्क एक वैध MySQL परिणाम संसाधन नहीं है

heres मेरी mysql_fetch_assoc:

<?php 

while ($row = mysql_fetch_assoc($sql)) 
{ 
    ?> 

    <tr> 
    <td><?php echo $row['name']; ?></td> 
    <td><?php echo $row['mobile']; ?></td> 
    <td><?php echo $row['email']; ?></td> 
    <td><?php echo $row['purchased']; ?></td> 
    <td><?php echo $row['remaining']; ?></td> 
    </tr> 

    <?php 
} 

?> 
+0

क्या यह काम करता है जब phpmyadmin या सीएलआई इंटरफ़ेस से निष्पादित किया जाता है? –

+0

कृपया दिखाएं कि आपने अपनी 'mysql_fetch_assoc() 'क्वेरी कैसे की। – stealthyninja

+1

मैंने इसे मूल पोस्ट में जोड़ा ... – scarhand

उत्तर

28

पसंद की कोशिश करने की कोशिश करें ...

count(select * from bookings where b.id_customer = c.id) 

... करने के लिए ...

(select count(*) from bookings where b.id_customer = c.id) 
17

आपकी क्वेरी को गलत तरीके से COUNT, जो @Will A's answer द्वारा कवर किया गया है का उपयोग करता है।

मैं भी एक संभवतः बेहतर निर्माण विकल्प है, जो मुझे लगता है कि सुझाव देना चाहते हैं, एक ही तर्क को दर्शाता है:

SELECT 
    c.name, 
    c.address, 
    c.postcode, 
    c.dob, 
    c.mobile, 
    c.email, 
    COUNT(*) AS purchased, 
    COUNT(b.the_date > $now OR NULL) AS remaining 
FROM customers AS c 
    INNER JOIN bookings AS b ON b.id_customer = c.id 
GROUP BY c.id 
ORDER BY c.name ASC 

नोट: आम तौर पर आप ग्रुप में सभी गैर-संकलित चयन भाव शामिल करने के लिए उम्मीद कर रहे हैं द्वारा। हालांकि MySQL shortened GROUP BY lists का समर्थन करता है, इसलिए यह उन महत्वपूर्ण अभिव्यक्तियों को निर्दिष्ट करने के लिए पर्याप्त है जो आपके द्वारा खींच रहे सभी गैर-समेकित डेटा को विशिष्ट रूप से पहचानते हैं। कृपया मनमाने ढंग से सुविधा का उपयोग करने से बचें। यदि ग्रुप बीई में शामिल कोई कॉलम प्रति समूह एक से अधिक मान नहीं है, आपके पास पर कोई नियंत्रण नहीं है, तो उस कॉलम को बिना किसी समेकन को खींचते समय वास्तव में मूल्य वापस किया जाएगा।

+0

यह सही उत्तर माना जाता है। – jaypabs

संबंधित मुद्दे