2015-09-04 2 views
0

У меня есть две таблицы:MySQL объединить две таблицы по идентификатору

Таблица альфа

id | title | catid 

1 | winter | 105 
2 | summer | 105 
3 | fall | 20 
4 | spring | 12 

Таблица бета

id | author 

1 | john 
2 | mike 
3 | bill 


Таблица результат - Я хотел бы для генерации g, сопоставляя идентификатор с двумя приведенными выше таблицами. Используя только те colums WHERE "catdid" является 105.

id | author | title 

1 | john | winter 
2 | mike | summer 


У меня есть следующий запрос:

$table_alpha = "alpha"; 
$table_beta = "beta"; 

$sql = " 
SELECT id, title, catid, author 
FROM $table_alpha, $table_beta 
WHERE catid = 105 
… 
??? 
… 
"; 

Любые идеи? Благодарю.

ответ

2

Я пишу это на моем телефоне, так что я надеюсь, что это работает, но на самом деле просто нужно использовать JOIN.

$table_alpha = "alpha"; 
$table_beta = "beta"; 

$sql = " 
    SELECT id, title, catid, author 
    FROM $table_alpha 
    JOIN $table_beta USING(id) 
    WHERE catid = 105 
"; 

Предложение USING говорит запрос для лечения id вещь, чтобы присоединиться на. Это должно сделать его безопасным для запроса по имени без указания того, какой из id получить (человек, которого я хотел бы проверить, но на моем телефоне нет SQL :-p)

+0

потрясающий. Это работает! Они также привели к «нет результата». – typocoder

+0

Прохладный, рад, что это сработало. Операция 'USING' великолепна, если условие' JOIN' является приятным и простым, иначе следите за операцией 'ON'. –

0

Это должно сделать работу:

SELECT a.id, b.author, a.title 
FROM alpha AS a 
INNER JOIN beta AS b 
ON a.id = b.id 
WHERE a.catid = 105; 
+1

Вам нужно сообщить 'JOIN', какое условие также присоединиться к таблицам. Вы можете сделать это с помощью 'ON alpha.id = beta.id' или' USING (id) '. –

+0

Ха! Понадобился время, чтобы понять, что вы имели в виду. Полностью забыл, выполняя работу на другом экране. Спасибо за исправление! – Andris

1

Ваш запрос был довольно близким, вам нужно использовать a ПРИСОЕДИНИТЕСЬ с условием:

$table_alpha = "alpha"; 
$table_beta = "beta"; 

$sql = " 
SELECT $table_alpha.id, title, author 
FROM $table_alpha 
JOIN $table_beta 
ON $table_alpha.id=$table_beta.id 
WHERE catid = 105 
" 
+1

Вы можете получить идентификатор «Столбец» в списке полей, это двусмысленная ошибка. Использование 'USING (id)' вместо оператора 'ON' * должно * сделать трюк. Или вы можете изменить 'SELECT' на' $ table_alpha.id'. –

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