2015-07-14 13 views
9

Baza:Jak usunąć powtarzające się informacje Json?

`--> product table 
id name  cid  uploadKey 
1 Cemera  1  7365 
2 Notebook 2  7222` 

`--> category table 
id catename 
1  canon 
2  toshiba` 


`--> attactments table 
id  uploadKey  filepath 
1  7365   /img/jdf.png 
2  7365   /img/sdsd.jpg` 

ten kod, aby utworzyć json plik:

$_GET['id']="1"; 
$json_response = array(); 
    if(isset($_GET['id'])) 
    { 
     $id=$_GET['id'];   
$select = mysql_query("SELECT product.name,category.catename,attactments.filepath FROM product INNER JOIN category ON category.id = product.cid INNER JOIN attactments ON attactments.uploadKey = product.uploadKey where product.id='".$id."' "); 
    while ($row = mysql_fetch_array($select , MYSQL_ASSOC)) {  
     $json_response[] = $row; 
     } 
    } 
echo $val= str_replace('\\/', '/', json_encode($json_response)); 

The powtarzania informacji wynik, jak usunąć powtórki chcę pokazać, jak poniżej:

[{"name":"Cemera","catename":"canon","filepath":"/img/jdf.png"},{"name":"Cemera","catename":"canon","filepath":"/img/sdsd.jpg"}] 

chcę Aby to pokazać, edytujemy:

[{"name":"Cemera","catename":"canon","filepath":"/img/jdf.png","filepath":"/img/sdsd.jpg"}] 
+0

to pomoże Ci http://stackoverflow.com/questions/23507853/remove-duplicate-objects-from-json-array http://stackoverflow.com/questions/18034696/rebuild-a-json-data- remove-duplicate-value-in-one-child-node –

Odpowiedz

2

Można GROUP_CONCAT()filepath, spróbuj kod miech

$select = mysql_query("SELECT product.name,category.catename,GROUP_CONCAT(attactments.filepath SEPARATOR ',') AS filepath FROM product INNER JOIN category ON category.id = product.cid INNER JOIN attactments ON attactments.uploadKey = product.uploadKey where product.id='".$id."' "); 

while ($row = mysql_fetch_array($select , MYSQL_ASSOC)) { 
    $row['filepath'] = explode(',',$row['filepath']); 
     $json_response[] = $row; 
     } 

wtedy dostaniesz następujący wynik

{"name":"Cemera","catename":"canon","filepath":["\/img\/jdf.png","\/img\/sdsd.jpg"]} 
+0

Dziękuję za odpowiedź, możesz mi tak powiedzieć [{"name": "Cemera", "catename": "canon", "filepath": " /img/jdf.png" ,"filepath":"/img/sdsd.jpg "}] – DNu

+0

Jak mam nadzieję podać różne wartości w tym samym kluczu? czy to możliwe? – KTAnj

1

Wszystkie pliki Filepath powinny być oddzielone przecinkami za pomocą GROUP_CONCAT. Podoba Ci się to

$select = mysql_query("SELECT product.name,category.catename,attactments.filepath 
FROM product 
INNER JOIN category ON category.id = product.cid 
INNER JOIN(SELECT uploadKey, GROUP_CONCAT(filepath SEPARATOR ',') FROM attactments GROUP BY uploadKey) a ON a.uploadKey = product.uploadKey where product.id='".$id."' "); 
0
Put limit 0,1 at the end of query. 
$select = mysql_query("SELECTproduct.name,category.catename,attactments.filepath FROM product INNER JOIN category ON category.id = product.cid INNER JOIN attactments ON attactments.uploadKey = product.uploadKey where product.id='".$id."' lomit 0,1 "); 

myślę, że to pomaga ..

Powiązane problemy