2017-06-02 4 views
-1

Ich habe eine Abfrage erstellt, die die Ergebnisse unten zurückgibt. Gibt es eine Möglichkeit, diese Ergebnisse nach der Rückgabe der Ergebnisse durch object_id aufzuteilen? Ich habe versucht, durch die object_id in SQL zu gruppieren, aber nur die Ergebnisse von Objekt-ID: 212 zurückgegeben wird.Wie kann ich die SQL-Ergebnisse mit PHP trennen?

Ich muss einfach diese Ergebnisse gruppieren, um mit PHP angezeigt zu werden. Jede Hilfe würde sehr geschätzt werden. Vielen Dank!

SQL results

Hier ist meine PHP-Code die Abfrage enthält:

$querystr = " 
    SELECT $wpdb->term_relationships.object_id, $wpdb->postmeta.meta_key, $wpdb->postmeta.meta_value 
    FROM $wpdb->term_relationships 
    INNER JOIN $wpdb->postmeta ON $wpdb->term_relationships.object_id = $wpdb->postmeta.post_id 
    WHERE $wpdb->term_relationships.term_taxonomy_id 
    IN (107, 108) 
    AND $wpdb->postmeta.meta_key 
    LIKE 'c%' 
    AND $wpdb->postmeta.meta_value != ''"; 

$pageposts = $wpdb->get_results($querystr, OBJECT); 
?> 

<?php if ($pageposts): ?> 
    <?php global $post; ?> 
    <?php foreach ($pageposts as $post): ?> 
     <?php print_r($post->object_id); ?> 
    <?php endforeach; ?> 
<?php else : ?> 
    error 
<?php endif; ?> 
+1

Nach 'order_id' sortieren und dann in php prüfen, ob' order_id' einer aktuellen Zeile von der vorherigen abweicht. –

+1

Zeigen Sie den Code, den Sie ausprobiert haben –

+1

Es gibt auch 'GROUP_CONCAT' in mysql das hat ein [anständiges Beispiel] (http://www.w3resource.com/mysql/aggregate-functions-and-grouping/aggregate-functions-and- grouping_group_concat.php), die Sie zusammen mit 'GROUP BY' verwenden könnten, die eine Liste von Werten zurückgeben würde, die von einem Zeichen [explodiert] (http://php.net/manual/function.explode.php) abgespielt werden) wenn Sie ein Array möchten. –

Antwort

2

ich alle Ihre schnellen Antworten zu schätzen wissen. Dank @JenneVanDerMeer konnte ich die gruppierten Werte zurückgeben, indem ich GROUP_CONCAT auf die meta_value und GROUP BY auf die object_id anwendete. Die Arbeitsabfrage lautet wie folgt:

SELECT wp_term_relationships.object_id, 
GROUP_CONCAT(wp_postmeta.meta_value), wp_postmeta.meta_key 
FROM wp_term_relationships 
INNER JOIN wp_postmeta ON wp_term_relationships.object_id = 
wp_postmeta.post_id 
WHERE wp_term_relationships.term_taxonomy_id 
IN (107) 
AND wp_postmeta.meta_key 
LIKE 'c%' 
AND wp_postmeta.meta_value != '' 
GROUP BY wp_term_relationships.object_id 
0

Eine einfache ORDER BY würde hier gut funktionieren.

SELECT object_id, meta_value FROM <TABLE> ORDER BY object_id ASC

+0

Dies wäre genau wie das Bild, das er gepostet hat, und war nicht wirklich die Frage zur Hand. Zugegeben, es war nicht die klarste aller Fragen. –

+0

Vielen Dank für Ihren Vorschlag @Dan. Aber mit 'ORDER BY' werden nur die Daten sortiert und nicht gruppiert. – Raja

+0

Was meinst du mit "Gruppe" dann? Ich denke, ich verstehe das erwartete Ergebnis nicht. –

Verwandte Themen