join tables count with if

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

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

Απάντηση
Άβαταρ μέλους
grigorakis4
Δημοσιεύσεις: 126
Εγγραφή: 16 Οκτ 2012 14:15
Τοποθεσία: ATHENS
Επικοινωνία:

join tables count with if

Δημοσίευση από grigorakis4 » 22 Απρ 2016 20:00

παρακαλώ όποιος γνωρίζει sql ας βοηθήει γιατί το έχω κάψει απλά... εχω 3 tables με αρθρα, σχόλια και εικόνες. Ανα άρθρο θελω να φαινεται το πληθος μόνο τον σχόλιων που έχουν εγκριθεί. Μέχρι εδω όλα καλα, όταν παω να κάνω join το table με τις εικονες ξαφνικά μετράει όλα τα σχόλια στα αρθρα ακομα και μη εγκεκριμένα

SELECT blog.*,
SUM( IF( blog_comment.public='1',blog_comment.public,0)) as count
LEFT JOIN blog_comment ON blog.id=blog_comment.pos
LEFT JOIN post_image ON post_image.post=blog.id
WHERE blog.public=1
GROUP BY blog.id
ORDER BY blog.id DESC

τι μπορεί να κάνω λάθος??? έχω κάνει πολλές αλλαγές αλλα τιποτα!!
Εικόνα

Άβαταρ μέλους
nirvana
Δημοσιεύσεις: 241
Εγγραφή: 01 Σεπ 2005 18:28
Τοποθεσία: Αγ. Παρασκευή

join tables count with if

Δημοσίευση από nirvana » 26 Απρ 2016 16:27

Δεν θα έπρεπε να υπαρχει ένα from κάπου; :)

Άβαταρ μέλους
grigorakis4
Δημοσιεύσεις: 126
Εγγραφή: 16 Οκτ 2012 14:15
Τοποθεσία: ATHENS
Επικοινωνία:

join tables count with if

Δημοσίευση από grigorakis4 » 27 Απρ 2016 04:42

Ναι υπάρχει!! Επειδή χρησιμοποιώ το codeigniter στο τέλος βάζω $this->db->get('table_name'); Και δηλώνεται το query κανονικά απλώς στην μετάφραση ξέχασα να το βάλω...
Εικόνα

Άβαταρ μέλους
nirvana
Δημοσιεύσεις: 241
Εγγραφή: 01 Σεπ 2005 18:28
Τοποθεσία: Αγ. Παρασκευή

join tables count with if

Δημοσίευση από nirvana » 27 Απρ 2016 09:56

Για δοκίμασε κάτι τέτοιο μήπως δουλέψει:

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

SELECT blog.*, COUNT(blog_comment.id) as count 
FROM blog
LEFT JOIN blog_comment ON blog.id=blog_comment.pos AND blog_comment.public='1'
LEFT JOIN post_image ON post_image.post=blog.id 
WHERE blog.public=1 
GROUP BY blog.id 
ORDER BY blog.id DESC 
Αλλιώς δοκίμασε το AND blog_comment.public='1' σαν where clause (κατω από το where σου).

Άβαταρ μέλους
grigorakis4
Δημοσιεύσεις: 126
Εγγραφή: 16 Οκτ 2012 14:15
Τοποθεσία: ATHENS
Επικοινωνία:

join tables count with if

Δημοσίευση από grigorakis4 » 28 Απρ 2016 12:48

γραφω λυση με την οποια τελικα δουλεψε...

$this->db->select("blog.id,
blog.title,
blog.body,
blog.created_at,
SUM(blog_comment.public=1) AS count,
post_image.path AS image
");
$this->db->join('blog_comment', 'blog.id=blog_comment.post', 'left');
$this->db->join('post_image', 'blog.id=post_image.post', 'left');
$this->db->where('blog.public', 1);
$this->db->order_by('blog.id', 'DESC');
$this->db->group_by('blog.id');
return $this->db->get('blog', $total, $page)->result();
Εικόνα

Απάντηση

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

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

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