SQL-запрос не работает в моих упражнениях JOIN - PullRequest
0 голосов
/ 14 ноября 2018

Я использую SQL-запрос, но в результате запроса получено 12 строк, должно быть 3 строки;Я не могу понять.

Не рабочий запрос:

SELECT g.*
    ,c.TxtFobFiyati
    ,C.TxtTalepETeslimTarihi
    ,c.TslParaBirimi
    ,c.TxtFiyat
    ,C.TslDepoKodu
    ,c.TslOlcuBirimi AS 'Olcu'
    ,j.TxtAmbalajDara
    ,j.TxtPaletDara
    ,g.TxtAdet AS 'ambalajAdet'
    ,g.TxtPaletSayisi AS 'paletSayisi'
    ,j.TxtAmbalajAdi
    ,J.TxtAmbalajNetKG
    ,j.TxtBoxGrossWeight
    ,C.TxtAciklama AS 'KalemAciklama'
    ,G.TxtAciklama AS 'KalemAciklama2'
    ,g.TxtPaletUstu AS 'PaletUstu'
    ,g.TxtPaletSayisi AS 'PaletSayisi'
    ,c.TxtUrunAdiEng AS 'UrunAdi_Ingilizce'
    ,C.TxtFobFiyati AS 'FobFiyati'
    ,j.TslPaletTipi AS 'PaletTipi'
    ,j.TxtPaletDara AS 'PaletDara'
FROM E_KT_SAS_Form A
LEFT JOIN E_KT_SAS_Form_DtyUrunler2 B
    ON A.ID = B.FORMID
LEFT JOIN E_KT_SAS_FrmSipUrunEkle C
    ON B.DOCUMENTID = C.ID
LEFT JOIN E_KT_SAS_Form_DtyTeyitEdilen2 D
    ON A.ID = D.FORMID
LEFT JOIN E_KT_SAS_FrmUretimTarihiEkle E
    ON D.DOCUMENTID = E.ID
        AND E.TslUrun = C.TslUrunKodu
LEFT JOIN E_KT_SAS_Form_DtySevkiyatlar F
    ON A.ID = F.FORMID
LEFT JOIN E_KT_SAS_FrmSevkiyatEkle G
    ON F.DOCUMENTID = G.ID
LEFT JOIN E_KT_SAS_FrmSipUrunEkle_DtyAmbalajlama H
    ON C.ID = H.FORMID
LEFT JOIN E_KT_SAS_FrmUrunAmbalajlama J
    ON H.DOCUMENTID = J.ID
WHERE E.TslOnay_TEXT = 'Evet'
    AND C.TslUrunKodu = G.TslUrun
    AND A.ID = 11682

Не рабочий результат

enter image description here

Таблица правильных результатов

enter image description here

1 Ответ

0 голосов
/ 14 ноября 2018

Шаг 1) Начните отсчет с таблицы драйверов, то есть с псевдонимом «A». Проверьте счет, если вы получаете 3. Продолжить. Повторите шаг 1 с каждым новым объединением и посмотрите, где ваш счет увеличится до 12. Это ваше беспокойное соединение. Прокомментируйте, если это возможно, и продолжайте присоединения. Если вы не можете выполнять последовательные объединения, найдите лучшее решение, чтобы уменьшить счет до 3.

Если вы уверены в своем предложении where отлично; иначе начать без этого тоже. Если число больше 3. Вставьте его обратно.

  select count(1) 
    FROM E_KT_SAS_Form A
    LEFT JOIN E_KT_SAS_Form_DtyUrunler2 B ON A.ID = B.FORMID
    LEFT JOIN E_KT_SAS_FrmSipUrunEkle C  ON B.DOCUMENTID = C.ID
    LEFT JOIN E_KT_SAS_Form_DtyTeyitEdilen2 D ON A.ID = D.FORMID
    LEFT JOIN E_KT_SAS_FrmUretimTarihiEkle E ON D.DOCUMENTID = E.ID
            AND E.TslUrun = C.TslUrunKodu 
    LEFT JOIN E_KT_SAS_Form_DtySevkiyatlar F ON A.ID = F.FORMID
    LEFT JOIN E_KT_SAS_FrmSevkiyatEkle G ON F.DOCUMENTID = G.ID
    LEFT JOIN E_KT_SAS_FrmSipUrunEkle_DtyAmbalajlama H ON C.ID = H.FORMID
    LEFT JOIN E_KT_SAS_FrmUrunAmbalajlama J ON H.DOCUMENTID = J.ID
    WHERE E.TslOnay_TEXT = 'Evet' AND C.TslUrunKodu = G.TslUrun AND A.ID = 11682
...