【问题标题】:How will I join these tables?我将如何加入这些表?
【发布时间】:2016-05-25 03:45:06
【问题描述】:

我在加入这些表格时遇到了问题;我有这个代码。

我的查询:

SELECT partial a.{ediTransactionDetailId, poNumber},
       partial b.{edi997DetailId, noOfTrans},
       partial c.{ediTransactionId, senderId, receiverId, gsNumber, isaNumber, fileName},
       partial d.{ediDocTypeId, docType}
FROM
    MATRIXEDIBUNDLE:editransactiondetail a
    JOIN   a.edi997details b
    JOIN   b.editransaction c
    JOIN   c.edidoctype d
WHERE  c.filename LIKE :fileName
    AND    a.ponumber LIKE :poNumber
    AND    d.doctype = :docType
    AND    a.flag = 1
    AND    c.flag = 1 

我得到了这个错误:

加入 b.ediTransaction':错误:类 Matrix\MatrixEdiBundle\Entity\EdiTransactionDetail 没有关联 名为edi997详情

如何加入?

【问题讨论】:

    标签: mysql sql database join


    【解决方案1】:

    你还没有建立表之间的关系,这就是你在这里得到错误的原因,

        SELECT table1.column1, table2.column2...
        FROM table1 JOIN table2
        ON table1.common_field = table2.common_field; // (This part is missing in your code)
    

    进一步学习http://www.tutorialspoint.com/sql/sql-using-joins.htm

    您的代码应如下所示,

    SELECT  a.edi_transaction_id, a.sender_id, a.receiver_id, a.gs_number, a.isa_number, a.file_name,            
            b.edi_997_detail_id, b.no_of_trans,
            c.edi_transaction_etail_id, c.po_number,                    
            d.edi_doc_type_id, d.doc_type
    
    FROM    (((edi_transaction a 
            left join edi_997_details b on a.edi_transaction_id = b.edi_transaction_id)
            left join edi_transaction_details c on a.edi_transaction_id = c.edi_transaction_id)
            left join edi_doc_type d on a.edi_doc_type_id = d.edi_doc_type_id)
    
    WHERE   a.file_name like '%Your file Name%'      
            and c.po_number like '%Your file Name%'    
            and d.doc_type = 'your doc type'    
            and a.flag = 1 AND c.flag = 1;
    

    希望这能完成你的任务。

    【讨论】:

    • 谢谢,这么棒的答案 :) 再次感谢您的帮助
    【解决方案2】:

    你需要学习JOIN sintaxis

    要么你需要ON clausule

    FROM MatrixEdiBundle:EdiTransactionDetail a 
    JOIN Details b
      ON a.SomeID  = B.SomeID
    

    或者你需要CROSS JOIN

    FROM MatrixEdiBundle:EdiTransactionDetail a 
    CROSS JOIN Details b
    

    【讨论】:

    • ,你的回答有点含糊,能再解释一下吗?
    • JOIN == INNER JOIN,而你的没有ON 分句,所以你要么添加你的ON 分句,要么将JOIN 更改为CROSS JOIN,我已经包含了你可以学习的链接更多关于JOINsintaxis。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    相关资源
    最近更新 更多