2014-01-14 4 views
0

Я пытаюсь получить выход из одного оператора SQL в другой оператор SQL, хотя он, похоже, не работает. Есть ли альтернатива, и как я могу ее использовать?Использование вывода инструкции SQL в другой инструкции SQL?

$id = ($_SESSION["user_id"]); 
       $query1 = "SELECT event_id FROM booking where user_id = '$id'"; 
       $result = mysql_query($query1); 

       $query2 = "SELECT * FROM event where event_id = '$result'"; 
       $results = mysql_query($query2); 

ответ

3

Вы можете присоединиться к таблицам, попробуйте использовать ниже синтаксис

SELECT event.event_id,booking.* 
FROM event 
JOIN booking on event.event_id=booking.event_id 
WHERE booking.user_id='$id'; 
+0

+1 - за исключением некоторых необычных обстоятельств, объединение должно быть предпочтительным по нескольким запросам. –

0

Что об использовании одного запроса вместо двух:

 $id = ($_SESSION["user_id"]); 
     $query2 = "SELECT * FROM event 
        where event_id IN (SELECT event_id 
             FROM booking 
             where user_id = '$id')"; 
     $results = mysql_query($query2); 
0

Вы также можете сделать это в одном запросе , используя sub-query, например:

$id = $_SESSION["user_id"]; 
$query = "SELECT * FROM event where event_id = (SELECT event_id FROM booking where user_id = '$id' LIMIT 1)"; 
$result = mysql_query($query); 
$row = mysql_fetch_array($result); 

Это только один вызов, но не два, а более эффективный.

Смежные вопросы