2012-06-24 14 views
7

मेरे पास नीचे दी गई छवि में दिखाए गए तीन सारणी हैं।जॉइन/सबक्वायरी का उपयोग करके एकाधिक तालिकाओं से डेटा का चयन कैसे करें? (PHP-MySQL)

नोट:projectheader तालिका भंडार एक कर्मचारी आईडी की लीड स्तंभ।

enter image description here

मेरे पास करने के लिए क्या चाहते हैं तालिका में एक तरह कुछ पुनः प्राप्त करने के अपने लक्ष्य को सक्षम हो है मैं का उपयोग कर ऐसा नहीं कर पा रहा था

(लीड, कि कर्मचारी के नेतृत्व नाम प्रदर्शित करता है) नीचे दी गई क्वेरी।

SELECT DISTINCT 
    projectdetails.ProjectDetailsID, 
    projectheader.ProjectID, 
    projectheader.ProjectName, 
    projectheader.Lead, 
    projectheader.StartDate, 
    projectheader.EndDate, 
    projectheader.Status, 
    projectheader.Remarks, 
    projectdetails.EmployeeID, 
    employee.Firstname, 
    employee.Lastname, 
    Lead.Leadname 
FROM 
    projectheader, 
    projectdetails, 
    employee, 
    (SELECT 
     projectheader.ProjectID AS projid, 
     CONCAT(employee.Firstname,' ',employee.Lastname) AS Leadname 
     FROM employee, projectheader, projectdetails 
     WHERE projectheader.ProjectID = projectdetails.ProjectID 
     AND projectheader.Lead = employee.EmployeeID 
) AS Lead 
WHERE projectheader.ProjectID = projectdetails.ProjectID 
AND projectdetails.EmployeeID = employee.EmployeeID 
AND projectheader.ProjectID = Lead.projid 
AND projectdetails.ProjectID = Lead.projid 

और यह परिणाम मिला: enter image description here

क्वेरी है कि मैं प्रयोग किया जाता है काफी लंबे समय से है और शायद अच्छी तरह से लिखा नहीं है, मैं कैसे मैं एक ही परिणाम एक बेहतर का उपयोग कर प्राप्त कर सकते थे पर एक अलग तरह से जानना चाहता हूँ एसक्यूएल क्वेरी या तो जॉइन या सबक्वायरी का उपयोग करके। (मैंने प्रोजेक्ट डिस्प्ले की शुरुआत में एक डिस्टिंट जोड़ा। प्रोजेक्ट डिस्प्लेआईडी क्योंकि इसके बिना कुछ पंक्तियां डुप्लिकेट की गई हैं)। मैं वर्तमान में उपयोग कर रहे एक से बेहतर क्वेरी की तलाश में हूं।

+3

बात मत करो के लिए प्रयास करें, बस कार्य करें। –

उत्तर

2

कुछ इस तरह का प्रयास करें (यह परीक्षण नहीं किया है, तो आप इसे आजमाइए कर सकते हैं):

SELECT 
    projectdetails.ProjectDetailsID, 
    projectheader.ProjectID, 
    projectheader.ProjectName, 
    projectheader.Lead, 
    projectheader.StartDate, 
    projectheader.EndDate, 
    projectheader.Status, 
    projectheader.Remarks, 
    projectdetails.EmployeeID, 
    employee.Firstname, 
    employee.Lastname, 
    CONCAT(Lead.Firstname,' ',Lead.Lastname) AS Leadname 
FROM 
    projectheader, 
    projectdetails, 
    employee, 
    employee as Lead 
WHERE projectheader.ProjectID = projectdetails.ProjectID 
AND projectdetails.EmployeeID = employee.EmployeeID 
AND projectheader.Lead = Lead.EmployeeID 
2

इस क्वेरी मैं अपने काम आशा है कि आप

SELECT pd.ProjectDetailsID,ph.*,e.* FROM 
`projectdetail` pd 
INNER JOIN projectheader ph ON ph.ProjectID = pd.ProjectID 
INNER JOIN employee e ON e.EmployeeID = pd.EmployeeID