Cómo maneja $wpdb el COUNT(*) en consultas de WordPress

4 nov 2011, 18:18:47
Vistas: 14.7K
Votos: 5

Entiendo cómo hacer consultas simples y mostrar resultados usando $wpdb. Este es mi proceso:

<?php $sql = 'select * from wp_votes;'; ?>
<?php $votes = $wpdb->get_results($sql); ?>
<?php if ( !empty ( $votes ) ) { ?>
     <?php foreach ( $votes as $vote ) { ?> 
          <td><?php echo $vote->id; ?></td>
          <td><?php echo $vote->post_id; ?></td>
          <td><?php echo $vote->date_voted; ?></td>
     <?php } ?> 
<?php } ?> 

Ahora, ¿qué pasa si mi consulta es más complicada, donde hay un COUNT(*) involucrado, así:

<?php $sql = 'select wp_votes.post_id, wp_posts.post_title, count(*) from wp_votes INNER JOIN wp_posts ON wp_votes.post_id = wp_posts.id group by wp_votes.post_id order by count(*) desc;'; ?> 

Esto debería devolver:

--------+------------+----------+
Post ID | Post Title | Count(*) |
--------+------------+----------+
1       |  "Mi post" |   6
2       |  "Hola..." |   5

¿Estaría bien si hago algo así?

<?php $wpdb->get_results($sql, ARRAY_N); ?> 

y luego, para obtener el conteo,

<?php echo $row[2]; ?> 

EDITADO: Resulta que en realidad es así de simple, no tengo que hacer nada más, $row[x] funcionará.

3
Comentarios

No estoy seguro de lo que intentas preguntar. ¿Por OK te refieres a ¿Se puede mejorar mi consulta? o ¿Funcionará esta consulta?

v0idless v0idless
4 nov 2011 18:32:12

¿Funcionará esta consulta?

21zna9 21zna9
4 nov 2011 18:50:25

No importa, entonces sí funciona.

21zna9 21zna9
5 nov 2011 02:21:34
Todas las respuestas a la pregunta 1
0

Puedes simplemente usar echo $wpdb->get_var( $sql ):

https://developer.wordpress.org/reference/classes/wpdb/

5 nov 2011 02:57:40