sql περίπλοκο ερώτημα ταξινόμησης με βάση την ημέρα

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

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

Απάντηση
Akis_gr49
Δημοσιεύσεις: 266
Εγγραφή: 07 Ιουν 2007 13:49

sql περίπλοκο ερώτημα ταξινόμησης με βάση την ημέρα

Δημοσίευση από Akis_gr49 » 04 Μαρ 2011 18:34

Μπα όχι, δεν δούλεψε, τα εμφανίζει συνεχόμενα.

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

March=1 
1. 5 March: Deal 

April=2 
1. 21 April: LIFESTYLE 
2. 25 April: The Good Wife 

July=3
1. 5 July: America's Next top model 
2. 12 July: Telemarketing 

August=4 
1. 24 August: Lost 
Κάποια άλλα ιδέα;

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

sql περίπλοκο ερώτημα ταξινόμησης με βάση την ημέρα

Δημοσίευση από dva_dev » 05 Μαρ 2011 11:13

Αν θέλεις να φέρεις τις εγγραφές για κάθε μήνα από τη mysql δοκίμασε κάτι τέτοιο, και παίξε με τον κώδικα που έχεις ήδη:

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

SELECT DAY(date) AS day, DATE_FORMAT(date,'%M') AS month, name, channel, (SELECT COUNT(*) FROM tv_program t WHERE LAST_DAY(t.date) = LAST_DAY(tv_program.date)) AS items FROM tv_program ORDER by date;
Αν προτιμάς με php χωρίς να αλλάξεις το query σου δοκίμασε κάτι του στυλ:

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

$query = "SELECT DAY(date) AS day, DATE_FORMAT(date,'%M') AS month, name, channel FROM tv_program ORDER BY date";
$result = mysql_query($query);

if ($row = mysql_fetch_array($result))
{
	$month = $row['month'];
	$lines = array&#40;sprintf&#40;'<li><strong>%d %s</strong>&#58; %s</li><br />',$row&#91;'day'&#93;,$row&#91;'month'&#93;,$row&#91;'name'&#93;&#41;&#41;;
	echo '<ol>';
	while &#40;$row = mysql_fetch_array&#40;$result&#41;&#41;
	&#123;
		if &#40;$month == $row&#91;'month'&#93;&#41; &#123;
			array_push&#40;$lines, sprintf&#40;'<li><strong>%d %s</strong>&#58; %s</li><br />',$row&#91;'day'&#93;,$row&#91;'month'&#93;,$row&#91;'name'&#93;&#41;&#41;;
		&#125; else &#123;
			echo '<h2>',$month,'=',count&#40;$lines&#41;,'</h2>',implode&#40;'',$lines&#41;;
			echo '</ol>';
			$month = $row&#91;'month'&#93;;
			$lines = array&#40;sprintf&#40;'<li><strong>%d %s</strong>&#58; %s</li><br />',$row&#91;'day'&#93;,$row&#91;'month'&#93;,$row&#91;'name'&#93;&#41;&#41;;
			echo '<ol>';
		&#125;
	&#125;
	echo '<h2>',$month,'=',count&#40;$lines&#41;,'</h2>',implode&#40;'',$lines&#41;;
	echo '</ol>';
&#125;

Akis_gr49
Δημοσιεύσεις: 266
Εγγραφή: 07 Ιουν 2007 13:49

sql περίπλοκο ερώτημα ταξινόμησης με βάση την ημέρα

Δημοσίευση από Akis_gr49 » 05 Μαρ 2011 13:07

Dva_dev σ' ευχαριστώ, θα κρατήσω το πρώτο με το query, απλό και λειτουργικό, και ο λόγος είναι ο παρακάτω.

Διάβασα πρόσφατα ένα άρθρο για τα top 10 mysql λάθη που κάνουν οι προγραμματιστές. Μπορείτε να το δείτε εδώ http://blogs.sitepoint.com/2010/11/19/m ... evelopers/.

Συγκεκριμένα το 5 αναφέρει το εξής

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

5. Favoring PHP over SQL
When you’re new to MySQL, it’s tempting to solve problems in the language you know. That can lead to unnecessary and slower code. For example, rather than using MySQL’s native AVG&#40;&#41; function, you use a PHP loop to calculate an average by summing all values in a record-set.

Watch out also for SQL queries within PHP loops. Normally, it’s more effective to run a query then loop through the results.

In general, utilize the strengths of your database when analyzing data. A little SQL knowledge goes a long way.
Που σημαίνει ότι πρέπει να χρησιμοποιούμε ερωτήματα στην sql τις περισσότερες φορές παρά να γράφουμε περίπλοκο κώδικα με php.

1) Πόσες φορές μπορούμε να χρησιμοποιήσουμε SELECT μέσα στην SELECT; μέχρι στιγμής έχω δει μόνο μια αλλά δεν ήξερα πως χρησιμοποιείται, τώρα κατάλαβα κάπως.
2) Είναι πιο γρήγορος ο κώδικας στο query μας αν τα βάζουμε όλα σε ένα query;

Ευχαριστώ παιδιά, είναι πολύτιμη η βοήθειά σας. Μαθαίνουμε αρκετά πραγματάκια..

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

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

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