Sum + groupby ερώτημα

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

Sum + groupby ερώτημα

Δημοσίευση από abeautifulmind » 13 Απρ 2012 00:26

Kαλησπέρα.
Να ρωτήσω κάτι έχω έναν πίνακα paragelia με αυτά τα πεδία
id pelatis imeromhnia time kod tem kitrina leuka dixroma sxolia
και έναν πίνακα data με αυτά τα πεδία
id kodikos_sinergaton xita presarista xroma epifaneia sxedio sxedio2 sxolia
ο πίνακας data έχει καταχωρημένους κωδικούς προϊόντων με κάποιες πληροφορίες για τους κωδικούς οι οποίες είναι τα υλικά που χρειάζονται για να κατασκευαστεί το προϊόν.Ο πίνακας paragelia έχει πληροφορίες από παραγγελίες που έχουν γίνει οι οποίες ζητούν κωδικό και τεμάχια από τον κωδικό.Εγώ θέλω με το ερώτημα να συσχετίσω τους κωδικούς που υπάρχουν στον πίνακα paragelia με τους ίδιους κωδικούς από τον πίνακα data και να εμφανίσω κάποιες πληροφορίες σε αυτόν που θα κατασκευάσει τα προϊόντα.Στην προκειμένη περίπτωση έχω αυτά στον πίνακα data
1 2028b 1 Δίχρωμο Διαμαντέ Λουστρέ 1,33
2 2047 3 Κίτρινο Αμοβολή Λουστρέ 1,33 Εσταυρωμένος Πολύ λείο
5 1012 3 Κίτρινο Διαμαντέ Πετράτο3 NULL NULL
6 1013 2 Κίτρινο Διαμαντέ Πετράτο3
7 7896 3 Δίχρωμο Αμοβολή Πετράτο3 NULL NULL
8 3230 2 Λευκό Σπατουλίνη Εσταυρωμένος Μοντέρνος
9 103 2 Αμοβολή Πετράτο2
10 104 4 Σπατουλίνη Εσταυρωμένος Μοντέρνος
13 8965 1 Κίτρινο Διαμαντέ Λουστρέ 1,33 Εσταυρωμένος
και στον πίνακα παραγγελία
1 panos 11/04/2012---21:55:33 1334170533 2028b 10 0 0 0
2 panos 11/04/2012---21:55:33 1334170533 1013 5 0 0 0
3 panos 11/04/2012---21:55:33 1334170533 103 0 5 10 0
4 panos 11/04/2012---21:55:33 1334170533 104 0 20 30 0
5 panos 11/04/2012---21:55:33 1334170533 2047 10 0 0 0
6 panos 11/04/2012---22:09:34 1334171374 8965 15 0 0 0
7 panos 11/04/2012---22:09:34 1334171374 2047 15 0 0 0
8 panos 11/04/2012---23:19:15 1334175555 104 0 5 10 10
9 mixalis 11/04/2012---23:33:34 1334176414 8965 15 0 0 0
Οπότε με ένα ερώτημα θέλω π.χ να μου πεί σύμφωνα με την παραγγελία αφού ψάξει στον data πόσα δίχρωμα,κίτρινα,και λευκά θέλω συνολικά. Έχω φτιάξει αυτό το ερώτημα

Κώδικας: Επιλογή όλων

$get_xrom="SELECT data.xroma,SUM(paragelia.tem + paragelia.kitrina + paragelia.leuka + paragelia.dixroma) AS totalxroma 
FROM paragelia JOIN data ON paragelia.kod = data.kodikos_sinergaton 
GROUP BY data.xroma;";
$get_xrom2=mysql_query($get_xrom) or die("Πρόβλημα");
while ($get_xrom3=mysql_fetch_array($get_xrom2)){

echo" $get_xrom3&#91;xroma&#93;<img src='../css/images/bullet.gif' border='0'</img>$get_xrom3&#91;totalxroma&#93; τεμ.<br> ";
&#125;
echo" <br> ";
και μου εμφανίζει δίχρωμο=10 τεμ κίτρινο 60 τεμ και κενό=90 τεμάχια.Το κενό είναι μάλλον τα λευκά αλλά επειδή υπάρχουν και κωδικοί που δεν έχουν προσδιορισμένο χρώμα το δηλώνει ο πελάτης στην παραγγελία όπως θα δείτε στον πίνακα paragelia.Αν τα υπολογίσετε πρέπει να μου δώσει 20 δίχρωμα από τους κωδικούς 2028b+104 50 λευκά από τους κωδικούς 103+104+104 και 90 κίτρινα από τους κωδικούς 1013+103+104+2047+8965+2047+104+8965 τις παραγγελίας.Τι κάνω λάθος?

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Sum + groupby ερώτημα

Δημοσίευση από dva_dev » 13 Απρ 2012 13:36

Δεν θα έπρεπε να έχουν οι κωδικοί προσδιορισμένο χρώμα;

Πάντως θα μπορούσες να δοκιμάσεις και κάτι σαν αυτό:

Κώδικας: Επιλογή όλων

SELECT xroma, SUM&#40;t1&#41; totalxroma
FROM &#40;
	SELECT data.xroma, SUM&#40;paragelia.tem&#41; AS t1
	FROM paragelia JOIN data ON paragelia.kod = data.kodikos_sinergaton
	WHERE data.xroma IS NOT NULL
	GROUP BY data.xroma
	UNION ALL
	SELECT 'Δίχρωμο', SUM&#40;dixroma&#41; FROM paragelia
	UNION ALL
	SELECT 'Κίτρινο', SUM&#40;kitrina&#41; FROM paragelia
	UNION ALL
	SELECT 'Λευκό', SUM&#40;leuka&#41; FROM paragelia
&#41;tmp
GROUP BY xroma;
Αν αντί για null στα κενά χρώματα έχεις κενό string κάνε την αντίστοιχη αλλαγή στο WHERE data.xroma IS NOT NULL.

Αλλά και πάλι πιστεύω πως είναι λάθος προσέγγιση γιατί αν βάλεις αύριο και κάποιο άλλο χρώμα π.χ. κόκκινο ή μαύρο ή ασημί τι θα κάνεις, θα βάλεις και κάθε φορά θα βάζεις επιπλέον στήλες στον πίνακα;

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Sum + groupby ερώτημα

Δημοσίευση από dva_dev » 13 Απρ 2012 17:00

Αν έχεις ακόμα δρόμο μπροστά σου μέχρι να ολοκληρώσεις την εφαρμογή ίσως είναι και ευκαιρία να ξεφορτωθείς κάποια από τις στήλες imeromhnia και time. Δεν χρειάζεται να κρατάς την ίδια πληροφορία στον ίδιο πίνακα δύο φορές (και μάλλον θα έλεγα με λάθος τρόπο στο πεδίο imeromhnia).

Για να σε αγχώσω και λίγο, οι 80 ώρες πότε τελειώνουν;
:D

abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

Sum + groupby ερώτημα

Δημοσίευση από abeautifulmind » 13 Απρ 2012 20:53

Οι 80 ήταν πριν από 3 μέρες :) .
Η αρχική τιμή τριπλασιάστηκε.
Μου είπε μάλλον θα το αναπτύξω και σε σελίδα online μετά το καλοκαίρι.(Αυτός πληρώνει ότι θέλει εγώ ακολουθώ αν και του είπα καλύτερα On line από την αρχή).
Αυτό με το επιπλέον χρώμα με προβλημάτισε και εμένα δεν το έχω σκεφτεί ακόμα.Αν και του πρότεινα να τυποποιήσει όλα τα προιόντα με στάνταρ χρώμα μου είπε ότι καλό θα ήταν αλλά έχει πελάτες που ήδη δουλεύουν κωδικούς χωρίς χρώμα απλά τους ζητάνε οι πελάτες το χρώμα προφορικά και θα πρέπει και αυτοί να φτιάξουν από την αρχή κωδικούς οπότε το άφησα έτσι Έχεις καμία πρόταση?
Τελευταία επεξεργασία από το μέλος abeautifulmind την 13 Απρ 2012 22:06, έχει επεξεργασθεί 1 φορά συνολικά.

abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

Sum + groupby ερώτημα

Δημοσίευση από abeautifulmind » 13 Απρ 2012 22:00

YΓ εγώ τα είχα κάνει έτσι τελικά

Κώδικας: Επιλογή όλων

$get_xrom="SELECT SUM&#40;paragelia.tem&#41; AS totalxroma 
FROM paragelia JOIN data ON paragelia.kod = data.kodikos_sinergaton 
where data.xroma='Κίτρινο'";
$get_xrom2=mysql_query&#40;$get_xrom&#41; or die&#40;"Πρόβλημα"&#41;;
$get_xrom3=mysql_fetch_array&#40;$get_xrom2&#41;;

$get_kitrina="SELECT SUM&#40;paragelia.kitrina&#41; AS totalkitrina 
FROM paragelia ";
$get_kitrina2=mysql_query&#40;$get_kitrina&#41; or die&#40;"Πρόβλημα"&#41;;
$get_kitrina3=mysql_fetch_array&#40;$get_kitrina2&#41;;
$ola_kitrina=$get_xrom3&#91;'totalxroma'&#93;+$get_kitrina3&#91;'totalkitrina'&#93;;

echo" Κίτρινα<img src='../css/images/bullet.gif' border='0'</img>$ola_kitrina τεμ.<br> ";



$get_xrom_leuka="SELECT SUM&#40;paragelia.tem&#41; AS totalxroma 
FROM paragelia JOIN data ON paragelia.kod = data.kodikos_sinergaton 
where data.xroma='Λευκό'";
$get_xrom_leuka2=mysql_query&#40;$get_xrom_leuka&#41; or die&#40;"Πρόβλημα"&#41;;
$get_xrom_leuka3=mysql_fetch_array&#40;$get_xrom_leuka2&#41;;

$get_leuka="SELECT SUM&#40;paragelia.leuka&#41; AS totalleuka 
FROM paragelia ";
$get_leuka2=mysql_query&#40;$get_leuka&#41; or die&#40;"Πρόβλημα"&#41;;
$get_leuka3=mysql_fetch_array&#40;$get_leuka2&#41;;
$ola_leuka=$get_xrom_leuka3&#91;'totalxroma'&#93;+$get_leuka3&#91;'totalleuka'&#93;;

echo" Λευκά<img src='../css/images/bullet.gif' border='0'</img>$ola_leuka τεμ.<br> ";

$get_xrom_dixroma="SELECT SUM&#40;paragelia.tem&#41; AS totalxroma 
FROM paragelia JOIN data ON paragelia.kod = data.kodikos_sinergaton 
where data.xroma='Δίχρωμο'";
$get_xrom_dixroma2=mysql_query&#40;$get_xrom_dixroma&#41; or die&#40;"Πρόβλημα"&#41;;
$get_xrom_dixroma3=mysql_fetch_array&#40;$get_xrom_dixroma2&#41;;

$get_dixroma="SELECT SUM&#40;paragelia.dixroma&#41; AS totaldixroma 
FROM paragelia ";
$get_dixroma2=mysql_query&#40;$get_dixroma&#41; or die&#40;"Πρόβλημα"&#41;;
$get_dixroma3=mysql_fetch_array&#40;$get_dixroma2&#41;;
$ola_dixroma=$get_xrom_dixroma3&#91;'totalxroma'&#93;+$get_dixroma3&#91;'totaldixroma'&#93;;

echo" Δίχρωμα<img src='../css/images/bullet.gif' border='0'</img>$ola_dixroma τεμ.<br> ";
αλλά το δικό σου είναι πιο συμαζεμένο :)

Κώδικας: Επιλογή όλων

$get_xrom="SELECT xroma, SUM&#40;t1&#41; totalxroma 
FROM &#40; 
   SELECT data.xroma, SUM&#40;paragelia.tem&#41; AS t1 
   FROM paragelia JOIN data ON paragelia.kod = data.kodikos_sinergaton 
   WHERE data.xroma!='' 
   GROUP BY data.xroma 
   UNION ALL 
   SELECT 'Δίχρωμο', SUM&#40;dixroma&#41; FROM paragelia 
   UNION ALL 
   SELECT 'Κίτρινο', SUM&#40;kitrina&#41; FROM paragelia 
   UNION ALL 
   SELECT 'Λευκό', SUM&#40;leuka&#41; FROM paragelia 
&#41;tmp 
GROUP BY xroma; ";
$get_xrom2=mysql_query&#40;$get_xrom&#41; or die&#40;"Πρόβλημα"&#41;;
while&#40;$get_xrom3=mysql_fetch_array&#40;$get_xrom2&#41;&#41;&#123;


echo" $get_xrom3&#91;xroma&#93;<img src='../css/images/bullet.gif' border='0'</img>$get_xrom3&#91;totalxroma&#93; τεμ.<br> ";
&#125;
[/quote]

abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

Sum + groupby ερώτημα

Δημοσίευση από abeautifulmind » 14 Απρ 2012 01:50

dva_dev σε αυτό που μου έδωσες αν θέλω να εμφανίσω και πόσα χρώματα ανά πρεσαριστό ή χυτό και ανά επιφάνεια πως μπορώ να το κάνω δηλαδή να μου δείχνει
Πρεσσαριστά φάση 1
Πρεσ/στό 1 Δίχρωμο10 τεμ.
Πρεσ/στό 1Κίτρινο30 τεμ.
Πρεσ/στό 2 Κίτρινο5 τεμ.
Πρεσ/στό 3Κίτρινο25 τεμ.
Πρεσ/στό 40 τεμ.

Πρεσσαριστά φάση 2
Πρεσ/στό 1 ΔίχρωμοΔιαμαντέ 10 τεμάχια
Πρεσ/στό 1ΚίτρινοΔιαμαντέ30 τεμάχια
Πρεσ/στό 2 ΚίτρινοΔιαμαντέ 5 τεμάχια
Πρεσ/στό 3ΚίτρινοΑμοβολή25 τεμάχια
Πρεσ/στό 4Σπατουλίνη0 τεμάχια

Χυτά φάση 1
Χυτό 2 0 τεμάχια

Χυτά φάση 2
Χυτό 2 Αμοβολή 0 τεμάχια

Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες