Выборка из двух таблиц через JOIN

269
27 февраля 2017, 12:07

Сижу 2 часа, не могу разобраться как получить данные из двух таблиц... всегда спасала конструкция вида ... LEFT JOIN table2 USING(id) .... Но не в этот раз:

Есть 2 таблицы:

table1:

| sid | aid | foo1
|  1  |  1  | bar1
|  1  |  1  | bar1
|  1  |  1  | bar1
|  1  |  1  | bar1
|  1  |  1  | bar1
|  1  |  2  | bar11
|  1  |  2  | bar11
|  1  |  2  | bar11

table2:

| sid | aid | foo2
|  1  |  1  | bar2
|  1  |  1  | bar2
|  1  |  1  | bar2
|  1  |  1  | bar2
|  1  |  1  | bar2
|  1  |  2  | bar22
|  1  |  2  | bar22
|  1  |  2  | bar22

связывающие поля - sid и aid

Запрос:

SELECT table1.foo1, table2.foo2 FROM `table1` LEFT JOIN table2 USING(sid, aid) WHERE sid = 1 AND aid = 1

Ожидание:

| sid | aid | foo1 | foo2
|  1  |  1  | bar1 | bar2
|  1  |  1  | bar1 | bar2
|  1  |  1  | bar1 | bar2
|  1  |  1  | bar1 | bar2
|  1  |  1  | bar1 | bar2

вместо этого получаю много повторяющихся строк... помогите составить запрос

Answer 1

Если не вдаваться в странности представленной структуры, то:

select distinct table1.sid, table1.aid, table1.foo1, table2.foo2 
from table1, table2
where table1.aid = table2.aid 
  and table1.sid = table2.sid 
  and table1.sid = 1 
  and table1.aid = 1
Answer 2

Вам нужно больше почитать про нормализацию запросов сикивела. Как написал коллега выше есть обычный джойн (который скорее всего вам и нужен). А LEFT JOIN соединяет таблицы таким образом, что при отсуствии совпадений с основной таблицей, в присоединяемой таблице будут пустые места.

Answer 3
SELECT table1.*, foo2 FROM `table1` JOIN 
(select distinct * from table2) X 
USING(sid, aid) WHERE table1.sid = 1 AND table1.aid = 1
READ ALSO
Перевод конфигурации xml на java config

Перевод конфигурации xml на java config

Всем привет, есть проект с аунтификацией пользователей через социальные сети, но он, к сожалению, сконфигурирован на xmlМне надо помощь перевести...

326
style.css в Intellij indea

style.css в Intellij indea

Всем доброго времени с утокПодскажите, как заставить Intellij Idea подключать файл css стилей к jsp странице? Файл стилей лежит в одной директории...

563
Проблема с работой кода

Проблема с работой кода

Есть сортировка методами Хоара, QuickSort(secondMethod) и методом пузырька(firstMethod)

296
Получить вторую половину строки

Получить вторую половину строки

ЗдравствуйтеЕсть строка наподобие этой: "Истомин Денис - Попырин Алексей 0-0(3-2) 40:15 adv"

334