2017-09-20 65 views
1

我有3個表,並試圖通過從每個表中放入一些特定數據來實現最終表。表如下:從3個不同的mysql表中選擇數據

一臺名爲tbl_category,這是如下:

+------+---------------+----------------+ 
| cid | category_name | category_image | 
+------+---------------+----------------+ 
| 1 | cars   | 1.jpg   | 
+------+---------------+----------------+ 

命名爲tbl_wallpaper第二個表是這樣的:

+------+---------------+----------------+-----------+ 
| id | cat_id  | scat_name  | image  | 
+------+---------------+----------------+-----------+ 
| 33 | 1    | blue cars  | 001.png | 
+------+---------------+----------------+-----------+ 

第三個表稱爲tbl_scategory它是這樣的:

+------+---------------+ 
| scid |scategory_name | 
+------+---------------+ 
| 1 | blue cars  | 
+------+---------------+ 

客觀即時試圖到達是得到這樣的

"HD_WALLPAPER": [ 
    { 
     "cid": "1", 
     "scat_name": "blue cars", 
     "category_name": "cars", 
     "category_image": "1.jpg", 
     "category_image_thumb": "001.png", 
     "total_wallpaper": "1" 
    }, 

意味着數據來自表tbl_categorytbl_wallpapertbl_scategory。我嘗試使用此代碼來獲得的總存儲在表tbl_scategory壁紙(tbl_category的子類)

IM,但它帶來的整個壁紙列

if(isset($_GET['cat_list'])) 
{ 
    $jsonObj= array(); 
    $cat_order=API_CAT_ORDER_BY; 
    $query="SELECT tbl_category.cid, tbl_category.category_name, tbl_category.category_image, tbl_scategory.scid, tbl_wallpaper.scat_name FROM tbl_category , 
    tbl_scategory, tbl_wallpaper 
    ORDER BY tbl_category.".$cat_order.""; 
    $sql = mysqli_query($mysqli,$query)or die(mysql_error()); 


    while($data = mysqli_fetch_assoc($sql)) 
    { 
     //Wallpaper count 
     $query_wall = "SELECT COUNT(*) as num FROM tbl_wallpaper WHERE scat_name='".$data['cid']."'"; 
     $total_wall = mysqli_fetch_array(mysqli_query($mysqli,$query_wall)); 
     $total_wall = $total_wall['num']; 
     $row['cid'] = $data['cid']; 
     $row['scat_name'] = $data['scat_name']; 
     $row['category_name'] = $data['category_name']; 
     $row['category_image'] = $file_path.'images/'.$data['category_image']; 
     $row['category_image_thumb'] = $file_path.'images/thumbs/'.$data['category_image']; 

     $row['total_wallpaper'] = $total_wall; 


     array_push($jsonObj,$row); 

    } 

    $set['HD_WALLPAPER'] = $jsonObj; 

    header('Content-Type: application/json; charset=utf-8'); 
    echo $val= str_replace('\\/', '/', json_encode($set,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)); 
    die(); 
} 

我不知道是什麼問題

注:表中其它行我只是把這些部分顯示的例子

+0

使用'JOIN'或'INNER JOIN'加入所有三個表,如果你有一個共同的關係。您還需要在** tbl_scategory **和其他表之間建立關係。 – Sand

+0

使用連接並明確給出條件以獲得正確的結果 –

+0

我試過連接但我無法達到結果,因爲它只有scat_name共同點,所以我被卡在即將與壁紙表加入的內容中。任何人都可以寫出這部分代碼。 –

回答

0

試試這個:

SELECT t1.cid, t1.category_name, t1.category_image, t2.scat_name, t2.image 
FROM tbl_category AS t1, tbl_wallpaper AS t2, tbl_scategory AS t3 
WHERE t1.id = t2.cat_id 
AND t2.scat_name = t3.scategory_name 

我希望能解決你的問題

+0

不幸的是沒有給出任何結果,但頁面 –

+0

在你的'mysql shell'或'phpmyadmin'中執行 –