PHP के माध्यम से mysql से डेटा प्राप्त करें, फिर समान कॉलम मानों और गिनती वाले समूह पंक्तियां

मेरे पास मूल रूप से यह प्रोग्राम है जो डेटाबेस से ऑर्डर प्राप्त करता है। मेरी समस्या यह है कि मुझे इस तरह की एक रिपोर्ट बनाने की आवश्यकता है कि स्क्रिप्ट को उसी कॉलम मान के साथ पंक्तियां मिलेंगी, फिर उन्हें गिनें और उन्हें प्रदर्शित करें।

टेबल 'ऑर्डर' कहें

salesorder family product
1111111    pi_gx  af000
1111111    pi_gx  af000
1111112    sfng   af111
1111113    pi_gx  af000

मेरे PHP पेज में प्रदर्शित होगा

sales order   family  qty   product
1111111       pi_gx   2     af000
1111112       sfng    1     af111
1111113       pi_gx   1     af000

यह बिक्री के आदेश की पंक्ति की मात्रा की गणना करता है और मात्रा प्रदर्शित करता है, साथ ही साथ मेरे पृष्ठ में उस बिक्री आदेश की केवल एक प्रति प्रदर्शित करता है।

यहां कोड है:

<body class="printable">

New Orders Dropped for Product Integration 1X

<table align="center" width="100%">
<tr>
    <td class="labels">Prepared: </td>
<td class="boxed"><?php date_default_timezone_set("Asia/Singapore");$today = date("d/m/y H:i");echo $today; ?></td>
    <td class="divider"> </td>
    <td class="labels">Time Coverage:  </td>
    <td class="boxed">12:00 to 2:00</td>
    <td class="divider"> </td>
    <td class="labels">BirthStamp: </td>
    <td class="boxed">5/21/2012</td>
    <td class="divider"> </td>
    <td class="labels">Saved: </td>
    <td class="boxed"><?php echo $today; ?></td>
</tr>
<tr>
    <td class="labels">Prepared by (Production): </td>
    <td><input type="text" name="preparer" id="preparer" class="boxedPrepared" /></td>
    <td class="divider"></td>
    <td class="labels">Recorded by (Store): </td>
    <td><input type="text" name="recorder" id="recorded" class="boxedPrepared" /></td>
    <td class="divider"></td>
    <td class="labels">Recorded: </td>
    <td class="boxed" colspan="3"><?php echo $today; ?></td>
</tr>
</table>

<?php $conn = mysql_connect("localhost", "root", "123456") or die(mysql_error()); mysql_select_db("store") or die(mysql_error()); $sql = mysql_query("SELECT * FROM report ORDER BY salesorder AND masterproduct ASC") or die(mysql_error()); if(mysql_num_rows($sql) == 0) { echo "
No ORDER/S in Queue
";
} else {
    echo "
    <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\" class=\"data\">
              <tr>
                <td class=\"dataHeader\">Sales Order</td>
                <td class=\"dataHeader\">Sales Order Code</td>
                <td class=\"dataHeader\">Family</td>
                <td class=\"dataHeader\">Product Code</td>
                <td class=\"dataHeader\">Quantity</td>
                <td class=\"dataHeader\">Birth Stamp</td>
                <td class=\"dataHeader\">Due Date</td>
              </tr>
    ";
    while($result = mysql_fetch_array($sql)) {
        echo "
              <tr>
                <td class=\"data\">".$result['salesorder']."</td>
                <td class=\"data\">*".$result['salesorder']."*
".$result['salesorder']."</td> <td class=\"data\">".$result['family']."</td> <td class=\"data\">*".$result['masterproduct']."*
".$result['masterproduct']."</td> <td class=\"data\">"; //need to echo the value here echo "</td> <td class=\"data\">".$result['birthstamp']."</td> <td class=\"data\">*".$result['duedate']."*
".$result['duedate']."</td> </tr> "; } echo "</table>"; } ?>
0
जोड़ा संपादित
विचारों: 1
क्षमा करें, मैं वास्तव में बहुत कुछ नहीं समझता क्योंकि मैं अभी भी एक नोब हूं। मैं यह कैसे करुं?
जोड़ा लेखक JudeJitsu, स्रोत
क्षमा करें, अभी भी इसे प्राप्त नहीं कर सकता है। क्या आप कृपया मुझे बता सकते हैं कि मुझे अपने कोड के साथ क्या करना है? मैं मदद की बहुत सराहना करता हूं। :(
जोड़ा लेखक JudeJitsu, स्रोत
ऐसा करने के लिए संबंधपरक डेटाबेस बनाए गए थे। मैं कुल कार्यों पर पढ़ने का सुझाव दूंगा कि MySQL का समर्थन करता है: dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
जोड़ा लेखक zebediah49, स्रोत
उस स्थिति में मैं सुझाव दूंगा कि mySQL कुल कार्यों, जुड़ने और उप-सामानों के साथ क्या कर सकता है। मुझे यकीन है कि आप स्वयं कुछ अच्छी चीजें पा सकते हैं, लेकिन dev.mysql.com /tech-resources/articles/subqueries_part_1.html tizag.com/mysqlTutorial/mysqljoins। PHP आपको शुरू करना चाहिए।
जोड़ा लेखक zebediah49, स्रोत

3 उत्तर

अंत में यह पता लगाया। मदद करने के लिए धन्यवाद दोस्तों। मैंने अपनी एसक्यूएल क्वेरी को इस में बदल दिया:

$sql = mysql_query("SELECT salesorder, masterproduct, family, birthstamp, duedate, COUNT( * ) AS total FROM report WHERE family = '$family' AND birthstamp BETWEEN '$startDT' AND '$endDT' GROUP BY salesorder, masterproduct, family, duedate  ");

और यह ठीक काम किया!

0
जोड़ा
SELECT salesorder, family, product, COUNT() AS qty FROM orders 
       GROUP BY salesorder;

संपादित करें: ठीक है, आकार के लिए इसे आजमाएं:

SELECT r.*, t.qty FROM report r LEFT JOIN
      (SELECT salesorder, COUNT() AS qty FROM orders 
         GROUP BY salesorder) t
      ON t.salesorder=r.salesorder
    ORDER BY r.salesorder AND r.masterproduct ASC
0
जोड़ा
त्वरित उत्तर के लिए धन्यवाद, हालांकि, समस्या यह है कि मुझे इसे किसी अन्य क्वेरी के अंदर डालने की आवश्यकता है। कृपया उपरोक्त मेरा संपादन देखें।
जोड़ा लेखक JudeJitsu, स्रोत
हाय @ zebediah49, क्षमा करें मेरा संपादन देर हो चुकी थी। मुझे मूल रूप से उपर्युक्त कोड के साथ ऐसा करने की आवश्यकता है, मैंने एक टिप्पणी की है जहां मात्रा बनाई जानी चाहिए। मुझे भी सच में यकीन नहीं है कि मेरी पहली क्वेरी इस स्थिति के लिए सही है या नहीं
जोड़ा लेखक JudeJitsu, स्रोत
@ zebediah49 ने आकार के साथ अपनी क्वेरी की कोशिश की, यह दिखाता है कि "आपको अपने एसक्यूएल सिंटैक्स में एक त्रुटि है; मैन्युअल रूप से उपयोग करने के लिए सही सिंटैक्स के लिए आपके MySQL सर्वर संस्करण से संबंधित मैनुअल की जांच करें ') AS qty ऑर्डर से ग्रुप बाय सेल्सऑर्डर) टी चालू लाइन 1 पर t.salesorder = r.salesorder ORDER B '
जोड़ा लेखक JudeJitsu, स्रोत
<�कोड> COUNT() AS qty
जोड़ा लेखक flowfree, स्रोत
हे, ने खुद से कहा, "मैं बस उस फिक्स में संपादित करूँगा और फिर उस टिप्पणी को देखूँगा"। अच्छी पकड़, भले ही मैंने इसे पढ़ने से पहले इसे ठीक किया :)
जोड़ा लेखक zebediah49, स्रोत
आप इसे पूरी तरह से कम कर सकते हैं, कोई समस्या नहीं। (मुझे अभी तक कोई संपादन नहीं दिख रहा है)
जोड़ा लेखक zebediah49, स्रोत
ओह समझा। फिर भी संबंधपरक डेटाबेस की एक और अद्भुत विशेषता: <�कोड> जॉइन </कोड>: डी। यदि आप परिचित नहीं हैं, तो वह रिपोर्ट से सबकुछ का चयन करेगा, और उसके बाद बिक्री के लिए विक्रय विक्रय पहचान का उपयोग करके, सबक्वायरी से निकाली गई मात्राओं पर गोंद लगाएगा।
जोड़ा लेखक zebediah49, स्रोत

इस क्वेरी को आज़माएं:

SELECT 
 COUNT() AS qty, sales_order, family, products 
FROM orders 
GROUP BY sales_order
0
जोड़ा