2013-03-21 4 views
2

У меня проблема с объединением MySQL, которую я пытаюсь понять за последние несколько часов. У меня есть 2 таблицы:MySQL FULL OUTER JOIN

article : 
id(int) 
label(varchar) 
direct_url(varchar) 

article_category: 
id(int) 
label(varchar) 

Я пытаюсь сделать запрос поиска с использованием метки и соединения обеих таблиц. Я делаю это:

SELECT label,direct_url FROM article FULL OUTER JOIN article_category ON article.label WHERE label LIKE %$q% ORDER BY label ASC 

Это, очевидно, неправильно, потому что это не работает. Я получаю 0 результатов каждый раз независимо от ключа поиска ($ q). Я был бы признателен, если бы кто-нибудь осветил мою проблему.

Edit: my source is here.

+0

ON article.label "= article_category_label", я думаю, вам нужно добавить часть в цитаты – johnyTee

+0

@johnyTee: спасибо за ответ, я пробовал с и без ... без успеха .. – Jay

ответ

2

MySQL не поддерживает FULL OUTER JOIN. То, что это делает, фактически является псевдонимом таблицы article до FULL. Существуют две синтаксические ошибки: OUTER JOIN и отсутствующие котировки вокруг значения LIKE. JOIN ON article.label также не делает то, что вы хотите, чтобы это сделать, скорее всего. Это должно было быть JOIN ON article.label = article_category.label.

Я уверен, что вы не хотите полного внешнего соединения - концептуально это будут значения в каждой таблице, которые не находятся в другом, но на самом деле кажется, что вы хотите, чтобы вы могли искать как метки полей. Если label - это столбец, который идентифицирует категорию, было бы лучше использовать идентификатор article_category вместо текущего столбца article.label. Если это не так, то у вас нет ничего, что вы могли бы присоединиться к таблицам в любом случае.

+0

Я изменил его к ID, как рекомендовано, и это сработало. Я также получил тот же результат, выполнив 2 запроса вместо 1 с помощью JOIN. Большое спасибо за указание на это, это очень помогло мне! – Jay

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