2016-07-29 6 views
1

Ich war in der Lage, das Problem zu beheben, aber wenn ich meine client_id Echo gibt es eine Menge Wiederholung, und ich habe versucht, array_unique und distinct, aber nichts hat funktioniert, was kann ich noch tun? Ich will auch, dass es alle Adressen anzeigt, weil einige Klienten mehr als eine Adresse haben.Wie mache ich die Ausgabe meines Arrays deutlich?

$query1= "Select distinct client_id from client_profile where client_status= 'f'"; 

     $result1= pg_query($conn2, $query1); 

    $clientid = array(); 
    while($row1 = pg_fetch_array($result1)){ 
     $id=$row1['client_id']; 
     $clientid[]=$id; 
     $clientid = array_unique($clientid); 

    } 

    //$clientid=array_unique($clientid); 
    $clientid=implode(',',$clientid); 


    $query= "select * from vouchers where client_id IN ($clientid)"; 

    $result = pg_query($conn,$query); 



    ?> 
    <!DOCTYPE html> 
    <html> 
     <head> 
      <title>Inactive Clients</title> 
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"> 
    <link href = "http://fonts.googleapis.com/css?family=Roboto:400"> 
    </head> 
     <body> 
    <table class="table table-sm"> 
     <thead> 
     <tr> 
      <th>Client id</th> 
      <th>File Name</th> 
     </tr> 
     </thead> 
     <?php 

     while($row = pg_fetch_array($result)) 
     { 


     ?> 

     <tbody> 

     <tr> 
      <td><?php echo $row['client_id']; ?></td> 
      <td><?php echo $row['file_name']; ?></td> 


     </tr> 
     <?php }?> </tbody> 
    </table> 
    </body> 
    </html> 
+0

Auf welche Abfrage tritt die Wiederholung auf? Ich denke, es ist die zweite Abfrage, bei der man nach Gutscheinen sucht, nicht die erste. Zuerst sollte es gut gehen. Sie sollten auch UNIQUE für eine Tabelle verwenden, in der der Wert eindeutig sein soll (in Ihrem Fall sollte client_id in client_profile eindeutig sein, dann müssten Sie DISTINCT dort nicht verwenden). – Janno

Antwort

0

Setzen Sie am Anfang Ihrer Abfrage "SELECT DISTINCT" Sie müssen es möglicherweise mehr als einmal setzen.

0

Sie könnten die Klausel GROUP BY dafür verwenden.

QUERY 1

<?php  
    $query1 = "SELECT client_id FROM `client_profile` AS CP "; 
    $query1 .= " WHERE CP.client_status='f' GROUP BY CP.client_id "; 

QUERY 2

<?php  
    $query2 = "SELECT * FROM `vouchers` AS VC "; 
    $query2 .= " WHERE VC.client_id IN ($clientid) GROUP BY VC.client_id "; 
1

Versuchen Sie, die folgende Abfrage: In diesem Fall Ihre Frage könnte so etwas wie dies liest. Überprüfen Sie auch, ob die Spaltennamen korrekt sind oder nicht.

select client_id,array_agg(address_Field_column) from vouchers where client_id IN (select distinct client_id from client_profile where client_status= 'f') group by client_id; 

Ich weiß nicht, welche Postgre-SQL-Version Sie verwenden. In Mysql gibt es eine group_concat Funktion. Für Ihre Referenz See this

+0

ja tat es tatsächlich – jasmine825

Verwandte Themen