2013-03-23 1 views
0

У меня есть две таблицы, и я должен выбрать значения из двух таблиц, основанных на запросеКак выбрать конкретный диапазон значений из объединения двух таблиц в mysql?

У меня есть две таблицы, как tab1,tab2 и каждый из которых имеет одинаковые столбцы name,age,job,gender. и в tab 2 у меня есть дополнительный столбец place

Я должен выбрать все значения из tab1 и tab2, где пол является мужской

, как это сделать?

SELECT tab1.name,tab1.gender,tab1.age,tab2.place FROM tab1 INNER JOIN tab2 ON tab1.gender=mhdetail.gender where gender='male'; 

Это все верно?

+0

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

ответ

0

Вы не ищите участия. Вы хотите, Union:

SELECT * 
FROM MyTable1 
WHERE Gender = 'Male' 

UNION -- Or 'UNION ALL' if you want duplicates. 

SELECT * 
FROM MyTable2 
WHERE Gender = 'Male' 

объединение будет использоваться, если у вас 2 таблицы, и хотел информацию от 2 таблиц, но только одна таблица будет содержать пол:

SELECT * 
FROM MyTable1 
JOIN MyTable2 ON MyTable1.ID = MyTable1.ID 
WHERE MyTable1.Gender = 'Male' 
0

Ваш запрос будет приводит к множеству повторяющихся строк. Потому что это станет многими для многих отношений. Если эти две таблицы связаны любыми средствами, такими как отношения между основными и внешними ключами, тогда используйте эти ключи. В противном случае используйте union, как указано в приведенном выше ответе.

2

Вы должны быть более точными на JOIN состоянии (-ах). Если у вас нет идентификаторов в обеих таблицах, но сочетание имя, пол, возраст уникален, то вы можете сделать это, как этот

SELECT t1.name, 
     t1.gender, 
     t1.age, 
     t2.place 
    FROM tab1 t1 LEFT JOIN 
     tab2 t2 ON t1.gender = t2.gender AND 
        t1.name = t2.name AND 
        t1.age = t2.age  
WHERE t1.gender='male'; 

Вот SQLFiddle

+0

С именем его таблиц, я думаю, это на самом деле то, что он хочет. Когда он писал, что у них одинаковая колонка, он, вероятно, имел в виду «часть одного столбца», то есть ключ. – Tipx

+0

Но в этом случае было бы целесообразно просто выбрать все данные из tab2, где пол является мужчиной? –

+0

Имеет смысл, если наборы данных различаются в обеих таблицах и (или) там больше столбцов в реальной ситуации. Если наборы данных равны, то я согласен, что нет смысла использовать JOIN. – peterm