2016-10-18 9 views
-1

Ich habe ein Plugin, das aus irgendeinem Grund die Daten in wirklich nervigen Orten speichert (3 verschiedene Tabellen unter den gleichen Namen usw.).Mehrere Datensätze zu einem Ausgang zusammenfügen

Ich habe 4 Felder zu den cms hinzugefügt, die ich in einem Element wiedergeben möchte. Funktion, Name, Text und ein Bild. Das Problem ist, alle 4 sind unter dem gleichen Namen in der Datenbank data gespeichert. Der einzige Unterschied zwischen ihnen ist ihre field_id.

enter image description here

Also habe ich die richtige Abfrage, die alle Daten erhält ich brauche, ist meine Frage wie folgt:

SELECT ct . * , fe . * , cn . * , dt . * 
FROM web_content ct 
INNER JOIN web_fieldsandfilters_elements fe ON fe.item_id = ct.id 
INNER JOIN web_fieldsandfilters_connections cn ON cn.element_id = fe.id 
INNER JOIN web_fieldsandfilters_data dt ON dt.element_id = fe.id 
WHERE ct.id 
IN (
'46' 
) 

Die obige Abfrage gibt die gleiche nur mehrfach Zeile mit Daten Anderssein . Wenn ich also die Ausgabe wiederhole, wird das Element mehrmals statt nur einmal angezeigt.

Wie kann ich die Ausgabe zusammenführen?

Meine gesamte Schleife mit der Abfrage, wie ich es haben jetzt:

<? 
//Query om referentie op de dienstenpage te laten zien 
$referentie       = " 
SELECT ct.*, fe.*, cn.*, dt.* 
FROM web_content ct 
INNER JOIN web_fieldsandfilters_elements fe on fe.item_id = ct.id 
INNER JOIN web_fieldsandfilters_connections cn on cn.element_id = fe.id 
INNER JOIN web_fieldsandfilters_data dt on dt.element_id = fe.id 
WHERE ct.id IN ('".$contentcr[0]['id']."')"; 
$referentiecon     = $conn->query($referentie); 
$referentiecr     = array(); 
while ($referentiecr[] = $referentiecon->fetch_array()); 
?> 
<div class="container"> 
    <div class="row"> 
     <div class="col-md-12 wow fadeInUp animated animated"> 
      <? 
      foreach($referentiecr as $referentietext){ 
       if($referentietext['field_id'] != ''){ 
        if($referentietext['field_id'] == '8'){ 
         $referentie_images = $referentietext['data']; 
         $ref_pictures = json_decode($referentie_images); 

         if($ref_pictures->{'image'} != ''){ 
          $image = 'cms/'.$ref_pictures->{'image'}; 
         }else{ 
          $image .= ''; 
         } 
        } 
        if($referentietext['field_id'] == '5'){ 
         $naam = $referentietext['data']; 
        } 

        if($referentietext['field_id'] == '6'){ 
         $text = $referentietext['data']; 
        } 

        if($referentietext['field_id'] == '7'){ 
         $functie = $referentietext['data']; 
        } 
        $refoverzicht .= ' 
        <div class="col-md-4"> 
         <img src="'.$image.'" style="max-width:100%;"> 
        </div> 
        <div class="col-md-8"> 
         <blockquote> 
          <p style="font-size: 14px;"> 
          '.$text.' 
          <br> 
          <em>– '.$naam.' – '.$functie.'</em> 
          </p> 
         </blockquote> 
        </div>'; 
        } 
       } 
    echo $refoverzicht; 
?> 

Resultierende in der folgenden:

enter image description here

+0

Fehle ich Ihren Punkt oder Sie sollten einfach 'GROUP BY ct.id' und' GROUP_CONCAT' in der 'SELECT' Klausel? –

Antwort

0

Ich kann nicht speziell, wenn Sie auf Abfrageebene einer Art und Weise denken Wählen Sie die Spalten und geben Sie ihnen einen Alias. Z.B. Wählen Sie ct.field_id als ct_field_id ....

Verwandte Themen