2017-01-04 3 views
0

Может ли кто-нибудь сказать мне, как я могу выбрать из двух таблиц? У меня есть эти таблицы.Как выбрать из двух таблиц в SQL?

Первый называется: Животные

Существует:

id owner_name  animal_name 
1 ludvik120  Larry 
2 marekk50  Pat 
3 ludvik120  Riki 

Второй называется: Animal_food

Существует:

id owner_name  food 
1 marekk50  carrot 
2 ludvik120  apple 
3 ludvik120  orange 

Wha т я хочу достичь, это выход:

Pat - carrot, Larry - apple, Riki - orange

Как вы можете видеть столбцы "OWNER_NAME:" равны. Возможно ли это сделать так или нет?

+1

посмотреть заявление об объединении – apomene

+0

Нет, вы не можете, поскольку они не уникальны. Потому что, если вы присоединитесь, вы также вернете «Ларри - оранжевый» и «Рики - яблоко». Подумайте обо всех возможных перестановках – Edward

+0

И некоторые советы, как я могу это сделать? Becouse я новичок в этом. – ludvik120

ответ

0

Да, это так. Соединения SQL используются для объединения строк из двух или более таблиц.

Различные типы JOINS:

  1. (ВНУТРЕННИЙ) РЕГИСТРИРУЙТЕСЬ: Выберите записи, которые имеют соответствующие значения в обеих таблицах.
  2. LEFT (OUTER) JOIN: Выберите записи из первой (самой левой) таблицы с соответствующими записями правой таблицы.
  3. RIGHT (OUTER) JOIN: Выберите записи из второй (самой правой) таблицы с соответствующими левыми табличными записями.
  4. FULL (OUTER) JOIN: выбор всех записей, которые соответствуют записям в левом или правом столбце.

Общий синтаксис: SELECT-столбцы имен FROM таблицы-name1 РЕГИСТРИРУЙТЕСЬ настольный name2 ON колонного имя1 = колонного имя2 WHERE условие

программист должен выяснить, какой из них подходит ему/ее в соответствии с его/ее требованиями в программе.

+0

И можете ли вы сказать мне, что мне нужно использовать? И как ? Я совершенно новый в этом – ludvik120

+0

Пожалуйста, перейдите по этой ссылке: - http://www.dofactory.com/sql/join – Dreamer

+0

Хорошо, спасибо вам попробует и скажет результат – ludvik120

1
  1. Попробуйте

    SELECT Animals.animal_name, Animal_food.food 
    FROM Animals 
    LEFT JOIN Animal_food 
    ON Animals.owner_name=Animal_food.owner_name; 
    
  2. Объединяем оба поля

    SELECT COALESCE(Animals.animal_name, ' - ') || COALESCE(Animal_food.food, ' - ') 
    FROM Animals 
    LEFT JOIN Animal_food 
    ON Animals.owner_name=Animal_food.owner_name; 
    
+0

Извините, но это не сработало. – ludvik120

0
I recomend to use Ids like this: 
Animals 
AnimalId owner_name  animal_name 
1   ludvik120  Larry 
2   marekk50  Pat 
3   ludvik120  Riki 

Animal_food 
Animal_foodId owner_name  food 
1    marekk50  carrot 
2    ludvik120  apple 
3    ludvik120  orange 

I think you need a third table to join and show the information as you need. 

отношений с

RelationId  AnimalId  Animal_foodId 
1    2    1 
2    1    2 
3    3    3 

И запрос:

Select A.animal_name, F.food 
from Relation R 
inner join Animals A on R.AnimalId = A.AnimalId 
inner join Animal_food F on R.Animal_foodId = F.Animal_foodId 

Хороший вид.

+0

Хорошо, спасибо за совет, я попробую это как-то: D – ludvik120

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