предложение where в запросе на внутреннее соединение - PullRequest
1 голос
/ 27 марта 2011

, пожалуйста, помогите мне относительно этого запроса:

function viewServices($userpno)
{
    echo $userpno;

    $this->query = "
SELECT task.employee_id , task.user_id , task.service_id, service.name AS servicename ,
       service.description AS servicedescription, employee.name AS employeename, employee.pic_path AS employeepicture,
       employee.pic_path 
FROM task where task.user_id = '$userpno' 
INNER JOIN employee ON employee.pno = task.employee_id
INNER JOIN user ON user.pno = task.user_id
INNER JOIN service ON service.service_id = task.service_id
";
}

Запрос работает без:

WHERE task.user_id = '$userpno'

Я также пытался таким образом:

WHERE task.user_id = $userpno

Но это не сработает.

Ошибка:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\admin\classes\Task.php on line 22

Пожалуйста, напишите мне, как можно вставить предложение WHERE.

Ответы [ 4 ]

7 голосов
/ 27 марта 2011

WHERE предложение идет в конце запроса

SELECT task.employee_id , task.user_id , task.service_id, service.name AS servicename ,service.description AS servicedescription, employee.name AS employeename, employee.pic_path AS employeepicture,employee.pic_path
FROM task
INNER JOIN employee  ON employee.pno = task.employee_id 
INNER JOIN user  ON user.pno = task.user_id
INNER JOIN service  ON service.service_id = task.service_id 
where task.user_id = '$userpno'
3 голосов
/ 27 марта 2011

Структура запроса: SELECT, FROM (присоединяется здесь), WHERE

у тебя ГДЕ слишком рано

$this->query = 
   "SELECT task.employee_id , task.user_id , task.service_id, service.name AS servicename ,service.description AS servicedescription, employee.name AS employeename, employee.pic_path AS employeepicture,employee.pic_path 
    FROM task INNER JOIN employee  ON employee.pno = task.employee_id  INNER JOIN user  ON user.pno = task.user_id INNER JOIN service  ON service.service_id = task.service_id 
    WHERE task.user_id = '$userpno'";

Запросы, которые выполняются правильно, возвращают ресурс, а запросы, которые не выполняются, возвращают false

2 голосов
/ 27 марта 2011

Попробуйте:

$this->query = "SELECT task.employee_id , task.user_id , task.service_id,
service.name AS servicename ,service.description AS servicedescription, 
employee.name AS employeename, employee.pic_path AS employeepicture,employee.pic_path
FROM task 
INNER JOIN employee  ON employee.pno = task.employee_id  
INNER JOIN user  ON user.pno = task.user_id 
INNER JOIN service  ON service.service_id = task.service_id 
where task.user_id = '$userpno'";
2 голосов
/ 27 марта 2011

У вас есть предложения JOIN после вашего предложения WHERE. Это неверно, поэтому ваш запрос возвращает false, потому что он не прошел.

Для справки, части запроса SELECT должны быть в порядке / формате, как указано в документации здесь: http://dev.mysql.com/doc/refman/5.0/en/select.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...