2013-02-21 33 views
40

मैं वर्तमान में निम्नलिखित में विदेशी/प्राथमिक कुंजी की समानता पर दो तालिकाओं के जुड़ने की क्वेरी कर सकता हूं।एसक्यूएल इनर दो से अधिक तालिकाओं में शामिल हो गए

$result = mysql_query("SELECT * FROM `table1` 
         INNER JOIN 
         `table2` ON table1.primaryKey=table2.table1Id"); 

मैं इसे एकाधिक तालिकाओं में विस्तारित करना चाहता हूं (सभी एक ही विदेशी कुंजी के साथ)। मैं निम्नलिखित कोड का प्रयास कर रहा हूं जो कुछ भी वापस नहीं कर रहा है। क्या कोई यह बता सकता है कि मैं क्या गलत कर रहा हूं?

$result = mysql_query("SELECT * FROM `table1` 
         INNER JOIN `table2` 
         INNER JOIN table3 
         ON table1.primaryKey=table2.table1Id=table3.table1Id"); 

उत्तर

98
SELECT * 
FROM table1 INNER JOIN table2 ON 
    table1.primaryKey=table2.table1Id INNER JOIN 
    table3 ON table1.primaryKey=table3.table1Id 
+5

कोई इस पर मेरी मदद कर सकते हैं? क्या यह तालिका 1 में से चुनें * INNER JOIN तालिका 2 INNER JOIN तालिका 3 तालिका 1 पर .primaryKey = table2.table1Id और table1.primaryKey = table3.table1Id'? –

0

right syntax की तरह है:

SELECT * FROM table1 INNER JOIN table2 ON table1.primaryKey = table2.ForeignKey 
INNER JOIN table3 ON table3.primaryKey = table2.ForeignKey 

Orthe अंतिम पंक्ति की तरह table1 पर table3 में शामिल होने:

ON table3.ForeignKey= table1.PrimaryKey 
16

यहाँ तीन या अधिक में शामिल होने के लिए एक सामान्य एसक्यूएल क्वेरी सिंटैक्स है तालिका। यह SQL क्वेरी सभी प्रमुख संबंध डेटाबेस में काम करना चाहिए उदा। MySQL, ओरेकल, माइक्रोसॉफ्ट SQLServer, Sybase और PostgreSQL:

SELECT t1.col, t3.col FROM table1 join table2 ON table1.primarykey = table2.foreignkey 
            join table3 ON table2.primarykey = table3.foreignkey 

हम पहले तालिका 1 और तालिका 2 जो table1 और table2 से संयुक्त डेटा है, जो तब table3 से जुड़ा हुआ है के साथ एक अस्थायी तालिका उत्पादन में शामिल हो। इस सूत्र को एन टेबल में 3 से अधिक टेबल के लिए बढ़ाया जा सकता है, आपको केवल यह सुनिश्चित करने की आवश्यकता है कि एन तालिका में शामिल होने के लिए SQL क्वेरी में एन-1 शामिल होना चाहिए। दो टेबलों में शामिल होने के लिए हमें 1 जॉइन स्टेटमेंट की आवश्यकता होती है और 3 टेबल में शामिल होने के लिए हमें 2 जॉइन स्टेटमेंट की आवश्यकता होती है।

+1

सबसे अच्छा जवाब मैं पा सकता था। संरचना का महान उदाहरण। – Parapluie

0
select * from Employee inner join [Order] 
On Employee.Employee_id=[Order].Employee_id 
inner join Book 
On Book.Book_id=[Order].Book_id 
inner join Book_Author 
On Book_Author.Book_id=Book.Book_id 
inner join Author 
On Book_Author.Author_id=Author.Author_id; 
1

सम्भावित समाधान:

select Company.Company_Id,Company.Company_Name, 
    Invoice_Details.Invoice_No, Product_Details.Price 
from Company inner join Invoice_Details 
    on Company.Company_Id=Invoice_Details.Company_Id 
    inner join Product_Details 
     on Invoice_Details.Invoice_No= Product_Details.Invoice_No 
where Price='70000'; 
-1

इस यहाँ की कोशिश करो वाक्य रचना

SELECT table1 .columnName, table3 .columnName 
    FROM table1 
    inner join table2 
      ON table1.primarykey = table2.foreignkey 
    inner join table3 
      ON table2.primarykey = table3.foreignkey 
उदाहरण के लिए

है: Select SalesHeader.invoiceDate,ActualSales,DeptName,tblInvDepartment.DeptCode ,LocationCode from SalesDetail Inner Join SalesHeader on SalesDetail.InvoiceNo = SalesHeader.InvoiceNo inner join tblInvDepartment on tblInvDepartment.DeptCode = SalesDetail.DeptCode

+1

सुंदर और बेकार डुप्लिकेट उत्तर ... – amdev

+0

यह अच्छा है ...यह सामान्य संस्करण करता है और एक तालिका के लिए विशिष्ट नहीं है। – Si8

0

कृपया अधिक से अधिक 2 के लिए भीतरी में शामिल होने लगता है टेबल

यहाँ 4 तालिका नाम

  • ग्राहकों
  • छात्र

    1. आदेश की तरह
    2. व्याख्याता

    तो SQL कोड जा सकते:

    select o.orderid, c.customername, l.lname, s.studadd, s.studmarks 
    from orders o 
        inner join customers c on o.customrid = c.customerid 
        inner join lecturer l on o.customrid = l.id 
        inner join student s on o.customrid=s.studmarks; 
    
  • 0

    नीचे दी गई इस विधि को आजमाएं, अपनी ज़रूरत के अनुरूप संशोधित करें।

    SELECT 
        employment_status.staff_type, 
        COUNT(monthly_pay_register.age), 
        monthly_pay_register.BASIC_SALARY, 
        monthly_pay_register.TOTAL_MONTHLY_ALLOWANCES, 
        monthly_pay_register.MONTHLY_GROSS, 
        monthly_pay_register.TOTAL_MONTHLY_DEDUCTIONS, 
        monthly_pay_register.MONTHLY_PAY 
    FROM 
        (monthly_pay_register INNER JOIN deduction_logs 
    ON 
        monthly_pay_register.employee_info_employee_no = deduction_logs.employee_no) 
    INNER JOIN 
        employment_status ON deduction_logs.employee_no = employment_status.employee_no 
    WHERE 
        monthly_pay_register.`YEAR`=2017 
    and 
        monthly_pay_register.`MONTH`='may' 
    
    0
    SELECT eb.n_EmpId, 
        em.s_EmpName, 
        deg.s_DesignationName, 
        dm.s_DeptName 
    FROM tbl_EmployeeMaster em 
    INNER JOIN tbl_DesignationMaster deg ON em.n_DesignationId=deg.n_DesignationId 
    INNER JOIN tbl_DepartmentMaster dm ON dm.n_DeptId = em.n_DepartmentId 
    INNER JOIN tbl_EmployeeBranch eb ON eb.n_BranchId = em.n_BranchId; 
    
    +0

    यह mysql/sql में 4 टेबलों में शामिल होने का उदाहरण है ... आशा है कि आपको सही परिणाम मिलेगा..धन्यवाद !!! –

     संबंधित मुद्दे

    • कोई संबंधित समस्या नहीं^_^