Выберите, существует ли в другой таблице, с условием И

#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. Да, это то, что я имел в виду, и это отлично работает, спасибо.