2013-08-20 3 views
0

Я знаю, что есть некоторые подобные вопросы, но есть и другие вещи, которые мне тоже нужно сделать. Вот мой дизайн базы данных:Использование DATA из 2 таблиц

ССЫЛКИ

ID Link 
-- -------- 
1 A Link 
2 B Link 
3 C Link 

LinkCollection

LinkCollectionID Link1 Link2 Link3 
---------------- ----- ----- ----- 
       1  2  1  3 
       2  3  2  2 
       3  1  3  1 

запросе я хотел бы сделать в MYSQL является

  1. Select from LinkCollection-TABLE where LinkCollectionID = '2'

  2. ТОГДА выбрать из текущей строки link1 (который в данном случае имеет значение 3)

Затем выбрать из ЗВЕНЬЕВ-таблицы, где ID = 'link1 значение' (который является 3)

Затем из текущей строки выберите ссылку

Конечным результатом запроса является «C Link». Если мы изменим LinkCollectionID на 1, то конечным результатом будет B Ссылка

, которую я хочу как-то вывести на php.

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

+1

Пожалуйста, используйте стиль кода для написания кода в сообщениях. –

ответ

0

После запроса будет работать при условии, LinkCollection всегда будет возвращать один ряд

select L.Link from Link L where L.id = (select Lc.link1 from LinkCollection Lc where Lc.LinkCollectionID=2) 

Чтобы быть на безопасной стороне, вы можете добавить ограничение 1 в суб-запроса

select L.Link from Link L where L.id = (select Lc.link1 from LinkCollection Lc where Lc.LinkCollectionID=2 limit 1) 
2

попробовать этот

select t2.Link1 , t1.Link from LinkCollection t2 
    INNER JOIN LINKS t1 
    ON t2.link1 = t1.id 
    WHERE LinkCollectionID = '2' 

DEMO HERE

+0

Hat от вас. Большое спасибо за хорошее решение. – Gruffer

+0

приветствую сэр :)! –

+0

@ user2700729 не забудьте принять ответ как решенный. Чтобы помочь другим –

0

Этот запрос даст вам поле ссылку, которую вы ищете:

SELECT l.Link 
FROM LinkCollection lc 
INNER JOIN LINKS l ON lc.Link1 = l.ID 
WHERE lc.LinkCollectionID = '2' 

SQLFIDLE: http://www.sqlfiddle.com/#!2/e9e38/6/0

+0

:) вы даете что-то новое? или просто наслаждайтесь копированием :). –

+0

@echo_Me Кажется, я застрял слишком много времени в редактировании :) ... BTW ... OP только ищет ссылку как вывод :) –

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