2013-09-26 2 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

Видя, как есть уже несколько ответов здесь , просто собираюсь дать вам это [ссылка на Q & A, что я написал] (h ttp: //stackoverflow.com/questions/12475850/how-can-an-sql-query-return-data-from-multiple-tables), который, я думаю, вам очень поможет. Это чисто о SQL и идет от основ до промежуточного. Он заполнен примерами и содержит весь код, необходимый для создания таблиц и т. Д., Чтобы вы могли фактически запускать и экспериментировать. Сделай себе одолжение и прочитай :) – Fluffeh

ответ

0

Вам нужно JOINS:

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, это самая лучшая практика для работы с sql в PHP.

Кажется, что вам нужны соединения.

$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 
Смежные вопросы