2013-12-22 3 views
0

im ищет инструкцию SQL для структуры ниже. Я хочу, чтобы выбрать все Uid годов и тексты таблиц, которые получили отношение к таблице снизилась:Мой SQL-запрос для объединения нескольких таблиц через mm

  • partsofspeech
  • verbs_tempus
  • words_case
  • words_language
  • words_relation

Каждая таблица имеет поля uid и текст. Каждый стол получил таблицу мм, чтобы сохранить какое-либо отношение. Значение местного значения относится к uid самой связанной таблицы. Foreign представляет uid от снижение.

Я хочу сделать это с 1 SQL-запросом. Я думаю, что это возможно с объединениями, но с новыми. Вот «лил графический: enter image description here

Вот мой запрос:

SELECT partsofspeech.uid, partsofspeech.text from declined 
LEFT JOIN partsofspeech_mm 
ON partsofspeech_mm.foreign = declined.uid 
LEFT JOIN partsofspeech 
ON partsofspeech_mm.local = partsofspeech.uid 

скрипку:

sql fiddle

ли any1 имеет ключ, чтобы справиться с этой рекурсивной вероятно?

+3

Поскольку вы новичок и не разместили свою версию запроса и ожидаете помощи при написании одного для вас, по крайней мере [edit] (http://stackoverflow.com/posts/20724943/edit), вы задаете вопрос и предоставляете ** соответствующие выборочные данные и желаемый результат ** в текстовой форме или еще лучше создать [sqlfiddle] (http://sqlfiddle.com). В противном случае ваш вопрос скорее всего будет закрыт. – peterm

+0

Не знаете, чего вы хотите достичь. Но, возможно, это может сделать трюк. http://sqlfiddle.com/#!2/0af271/22 –

+0

Кстати, нельзя ли манипулировать данными за пределами MYSQL? Возможно, с PHP? –

ответ

0

Вот первая таблица partsofspeech сделано для вас

SELECT T1.uid,T1.text,T2.local,T2.foreign,T3.uid,T3.text 
    FROM partsofspeech T1 
    INNER JOIN partsofspeech_nm T2 ON (T1.uid = T2.local) 
    INNER JOIN declined T3 ON (T2.foreign = T3.uid) 

вы можете сделать все остальное за другими столами и UNION их вместе.

+0

Ty для вашего ответа. я запутался с почтовой системой здесь и создал новый пост случайно. (надеюсь, я удалил его правильно):/ [sql fiddle] [1] [1]: http://sqlfiddle.com/#!2/0af271/2 im используя левые соединения, чтобы сделать это атм. Есть ли способ получить следующие части коротким рекурсивным способом? – SineMatha

+0

вопрос * INNER JOIN *. Я не очень знакомы с разными типами: Предоставляет ли я мне результаты? – SineMatha

+0

Спасибо за подсказку с 'UNION'. Раньше я этого не знал. – SineMatha

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