#mysql #sql
#mysql #sql
Вопрос:
Я не нашел конкретного ответа на свой вопрос, хотя есть очень похожие темы по одному и тому же вопросу.
Вот моя база данных (MySQL) :
Table urls
ID;URL
Table links
ID;TARGET;SOURCE
Я хочу выбрать ссылки, где их ИСТОЧНИК и ЦЕЛЬ существуют в таблице urls.
Я предполагаю, что ответом будут подзапросы или соединение по левому краю, но, похоже, я не могу заставить это работать.
Комментарии:
1. 2 присоединяется к 1 для цели 1 для источника.
Ответ №1:
ЕСЛИ вы имеете в виду, что и цель, и источник в одной строке ссылок должны существовать в URL-адресах, например, 2 внутренних соединения
DROP TABLE IF EXISTS LINKS,URLS;
CREATE Table urls
(ID INT,URL VARCHAR(3));
CREATE Table links
(ID INT,TARGET VARCHAR(3),SOURCE VARCHAR(3));
INSERT INTO URLS VALUES
(1,'AAA'),(2,'BBB'),(3,'CCC'),(4,'DDD');
INSERT INTO LINKS VALUES
(1,'AAA','BBB'),(2,'CCC','ZZZ'),(3,'ZZZ','DDD');
SELECT *
FROM LINKS
JOIN URLS U1 ON U1.URL = LINKS.SOURCE
JOIN URLS U2 ON U2.URL = LINKS.TARGET;
------ -------- -------- ------ ------ ------ ------
| ID | TARGET | SOURCE | ID | URL | ID | URL |
------ -------- -------- ------ ------ ------ ------
| 1 | AAA | BBB | 2 | BBB | 1 | AAA |
------ -------- -------- ------ ------ ------ ------
Комментарии:
1. Да, это то, что я имел в виду, и это отлично работает, спасибо.