Как мне выполнить doble LEFT JOIN? - PullRequest
0 голосов
/ 17 июня 2019

Мне нужна ваша помощь сегодня:)

Я пытаюсь выполнить инструкцию SQL, используя c #:

 "SELECT table_organe.id,table_famille.famille,table_organe.Libelle,table_organe.Description,table_organe.Symbole, rle_orgposition.position " + "FROM (table_organe " +
    "LEFT JOIN table_famille ON table_organe.Famille= table_famille.ID) " +   "LEFT JOIN rle_orgposition ON table_organe.id = rle_orgposition.idOrgane";

Кажется, что не работает, я пробовал с помощью скобок,так далее.Единственная работающая инструкция:

SELECT * " +
"FROM (table_organe " +
"LEFT JOIN table_famille ON table_organe.Famille= table_famille.ID) " +   
"LEFT JOIN rle_orgposition ON table_organe.id = rle_orgposition.idOrgane";

Проблема в значениях, которые я хочу получить.Спасибо за вашу помощь !

(извините, если мой английский не идеален, я не являюсь носителем языка)!

БОЛЬШОЕ РЕДАКТИРОВАНИЕ: я не знаю почему, но в своей инструкции я просто поставил скобкиSELECT ... rle_orgposition. [Position] и это сработало .... почему?проблема решена, но она все еще странна для меня.

Ответы [ 2 ]

1 голос
/ 17 июня 2019

У вас неправильный синтаксис FROM (... ) LEFT

 SELECT table_organe.id
  , table_famille.famille
  , table_organe.Libelle
  , table_organe.Description
  , table_organe.Symbole
  , rle_orgposition.position  
  FROM table_organe 
  LEFT JOIN table_famille ON table_organe.Famille= table_famille.ID
  LEFT JOIN rle_orgposition ON table_organe.id = rle_orgposition.idOrgane

Ответ обновлен для БОЛЬШОГО РЕДАКТИРОВАНИЯ ..

второй запрос работает, потому что вы используете select * (все столбцы) без упоминания какого-либо указанногоимя столбца .. В первом запросе использование () FROM () LEFT без правильного псевдонима таблицы для выбора с именованным именем столбца не приводит ни к какому псевдониму ... и это вызывает ошибку ..

Вы можете легко проверить, используя запрос, указанный выше

0 голосов
/ 17 июня 2019

C # код такой:

var statement = @"SELECT table_orgrane.id, table_orgrane.Famille
FROM table_organe
LEFT JOIN table_famille ON table_organe.Famille = table_famille.ID  
LEFT JOIN rle_orgposition ON table_organe.id = rle_orgposition.idOrgane";

используйте columns вместо *.

...