MySQL соединение и подзапрос от соединения - PullRequest
0 голосов
/ 29 марта 2012

Это продолжение моего предыдущего вопроса :

SELECT s.unique_id, s.counter, s.sequence_length, s.yearmonth, s.mod_date_stamp,
  pg1.page_url as page1, pg2.page_url as page2, pg3.page_url as page3,
  pg4.page_url as page4, pg5.page_url as page5
FROM session s
  LEFT JOIN sessionpage pg1 ON pg1.unique_id = s.page1 
  LEFT JOIN sessionpage pg2 ON pg2.unique_id = s.page2
  LEFT JOIN sessionpage pg3 ON pg3.unique_id = s.page3
  LEFT JOIN sessionpage pg4 ON pg4.unique_id = s.page4
  LEFT JOIN sessionpage pg5 ON pg5.unique_id = s.page5

отлично работает для отображения всей таблицы.Теперь мне нужно select s.unique_id WHERE page1=/path/to/something.html AND page2=/path/to/somethingelse.html.

Я не могу понять, как вернуть только unique_id, не возвращая всю таблицу.Я знаю, что мне нужен вложенный запрос, но я не могу понять синтаксис.

Это должно выглядеть примерно так:

SELECT s.unique_id 
  (SELECT pg1.page_url as page1, pg2.page_url as page2, pg3.page_url as page3,
    pg4.page_url as page4, pg5.page_url as page5 FROM session201203) s
  LEFT JOIN sessionpage pg1 ON pg1.unique_id = s.page1 
  LEFT JOIN sessionpage pg2 ON pg2.unique_id = s.page2 
  LEFT JOIN sessionpage pg3 ON pg3.unique_id = s.page3 
  LEFT JOIN sessionpage pg4 ON pg4.unique_id = s.page4 
  LEFT JOIN sessionpage pg5 ON pg5.unique_id = s.page5
WHERE s.sequence_length = 2 AND s.page1 = '/path1.html' AND s.page2 = '/path2.html';

Но этот запрос не выполняется, потому что он пытается найти pg1 и т. Д. До его присоединения.Я попробовал кучу вещей и не могу понять это.Еще раз спасибо.

1 Ответ

0 голосов
/ 29 марта 2012

Попробуйте: переместите скобку ) s после последнего соединения

SELECT s.unique_id 
  FROM (SELECT pg1.page_url as page1, pg2.page_url as page2, pg3.page_url as page3,
    pg4.page_url as page4, pg5.page_url as page5 FROM session201203
  LEFT JOIN sessionpage pg1 ON pg1.unique_id = s.page1 
  LEFT JOIN sessionpage pg2 ON pg2.unique_id = s.page2 
  LEFT JOIN sessionpage pg3 ON pg3.unique_id = s.page3 
  LEFT JOIN sessionpage pg4 ON pg4.unique_id = s.page4 
  LEFT JOIN sessionpage pg5 ON pg5.unique_id = s.page5) s
WHERE s.sequence_length = 2 AND s.page1 = '/path1.html' AND s.page2 = '/path2.html';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...