2013-09-26 97 views
0

以下是表:如何進行有效的sql查詢?

表用戶:

User_Id = 1,2,3; 
User_Name: A,B,C; 

表業務:

Business_Id = 1,2,3; 
Business_Name: A,B,C; 
Business_Detail: Details_A, Details_b, Details_c; 

表訪問:

Visit_Id = 1,2,3,4,5,6: 
User_Id = 1,1,1,2,1,1; 
Business_Id = 1,1,1,2,2,3; 

我需要創建一個返回的功能訪問列表和關於該業務的信息用戶訪問過。到目前爲止,我已經獲得了用戶訪問過的商店列表,但不知道該從哪裏去。

function visit_count($user_id=1){ 
    global $database; 
    $sql = "SELECT * FROM visits WHERE user_id ='{$user_id}' LIMIT 0 , 30"; 
    $result_set = $database->query($sql); 
    $visits = mysql_fetch_array($result_set); 

    //Get the unique ids of the business 

    //Run another query that has the business information 

    //combing both queries. 

} 

感謝您的快速回復傢伙。這幾乎是我所期待的,我認爲我找的查詢返回的對象如下:

Object: 
    - Business: 
    - Business_id; 
    - Business_name; 
    - Visit_counts; 
    - Business: 
    - Business_id; 
    - Business_name; 
    - Visit_counts; 

所以基本上對象將業務信息和沒有的次數,用戶訪問了商店。

感謝很多所有幫助

+1

看到,因爲已經有許多的答案在這裏,只是要給你這個[鏈接到我寫的問答](h ttp://stackoverflow.com/questions/12475850/how-can-an-sql-query-return-data-from-multiple-tables)我認爲這將對你有很大的幫助。它純粹是關於SQL,從基礎到中級。它充滿了示例,幷包含了建立表格所需的所有代碼等,以便您可以實際運行並實驗自己。幫你一個忙,閱讀:) – Fluffeh

回答

0

您需要連接:

SELECT v.*, b.Business_Name, b.Business_Detail FROM visits as v 
JOIN Business as b on b.Business_Id = v.Business_Id 
WHERE v.user_id ='{$user_id}' LIMIT 0 , 30 

而且 - 使用的mysqli,並確保您sanitizing your inputs

編輯

關注@ KHMKShore關於使用預處理語句的建議。

0

那麼,首先你應該看看prepared statements,這是當前在PHP中使用sql的最佳實踐。

它聽起來像你需要的是連接。

$sql = "SELECT * FROM visits v 
     JOIN business b ON b.Business_Id = v.Business_Id 
     JOIN user u ON u.Business_Id = v.Business_Id 
     WHERE v.user_id ='{$user_id}' LIMIT 0 , 30"; 
0
SELECT Visits.* , Business.Business_Name, Business.Business_Details 
FROM Visits 
LEFT JOIN Business on Business.Business_Id = Visits.Business_Id 
WHERE Visits.User_Id =1 

試試這個SQL爲每個用戶

0

嘗試下面的SQL代碼:

SELECT business.business_id, business.business_name, COUNT(business.business_id) AS visit_counts 
FROM business 
    LEFT JOIN visits 
    ON business.business_id = visits.business_id 
GROUP BY business_id, user_id 

結果:

business_id |business_name |visit_counts 
1   A    3 
2   B    1 
2   B    1 
3   C    1