2012-06-08 7 views
5

के साथ काम नहीं करने में शामिल हो गया है, मैं सहयोगी चयनों के लिए स्वयं व्याख्या करने वाले नामों का उपयोग करना चाहता हूं, और कभी-कभी डुप्लीकेट से बचने के लिए भी अनिवार्य है, इसलिए मैं एएस कीवर्ड का उपयोग करता हूं। लेकिन यह मुझे बाएं जुड़ने के साथ कुछ परेशानी दे रहा है।MySQL एएस कीवर्ड

यह काम करता है:

$sql = "SELECT *, 
     projects.id as projects_id 
     FROM projects"; 

$sql .= " LEFT JOIN". 
    " (SELECT 
     projectfiles.id as projectfiles_id, 
     projectfiles.fileID as projectfiles_fileID, 
     projectfiles.projectID as projectfiles_projectID 
     FROM projectfiles 
     ) AS projectfiles". 
    " ON projects.id = projectfiles_projectID"; 

हालांकि अब मैं projects से बेकार डेटा के साथ खत्म हो, क्योंकि यह भी खेतों userID और name, जो मैं की जरूरत नहीं है ऊपर उठाता है। यह आईडी को दो बार उठा रहा है।

तो मैंने इसे बदलने की कोशिश की;

$sql = "SELECT 
     projects.id as projects_id 
     FROM projects"; 
पर लाइन बनने

" ON projects_id = projectfiles_projectID"; 

लेकिन उस त्रुटि Unknown column projects_id

तो मैंने कोशिश की

" ON projects.projects_id = projectfiles_projectID"; 

लेकिन अब भी वही त्रुटि

मैं दे दी है साथ

तो प्रयोग शुरू किया, और

$sql = "SELECT id,name,userID FROM projects"; 

$sql .= " LEFT JOIN". 
    " (SELECT 
     projectfiles.id as projectfiles_id, 
     projectfiles.fileID as projectfiles_fileID, 
     projectfiles.projectID as projectfiles_projectID 
     FROM projectfiles 
     ) AS projectfiles". 
    " ON projects.id = projectfiles_projectID"; 

(एक परीक्षण के रूप) और मेरे आश्चर्य, बायाँ शामिल होने के कुछ भी लेने के लिए नहीं मालूम था की कोशिश की।

कोड:

$sql = "SELECT id,name,userID FROM projects"; 

$sql .= " LEFT JOIN". 
    " (SELECT 
     projectfiles.id as projectfiles_id, 
     projectfiles.fileID as projectfiles_fileID, 
     projectfiles.projectID as projectfiles_projectID 
     FROM projectfiles 
     ) AS projectfiles". 
    " ON projects.id = projectfiles_projectID"; 

$res = mysql_query($sql); 
if(!$res) die(mysql_error()); 

if(mysql_num_rows($res) > 0) 
{ 
    $rownum = 0; 
    while($row = mysql_fetch_assoc($res)) 
    { 
     print_r($row); 
     echo "<br/><br/>"; 
    $rownum++; 
    } 
} 

आउटपुट:

problem

कौन सा अजीब है projects लेकिन 3 में केवल एक पंक्ति है कि projectID साथ projectfiles में है, क्योंकि ... क्या मैं गलत कर रहा हूँ ?

+0

पर हालत में स्तंभ नाम के कहने का प्रयोग करें और जब भी चयन करते समय, यह दे देंगे आप समाधान सही करते हैं। एएस का उपयोग करके जटिल करने की आवश्यकता नहीं है। अपना नमूना डेटा दिखाएं और आवश्यक ओ/पी। –

+0

आपके अपेक्षित आउटपुट क्या है? –

+0

क्या आप प्रोजेक्ट टेबल के साथ एकल रिकॉर्ड चाहते हैं तो DISTINCT का उपयोग करें। –

उत्तर

1

projectfiles मेज से केवल चयन करने के लिए:

$sql = "SELECT projectfiles.*, 
     projects.id as projects_id 
     FROM projects"; 

// rest of the code is the same 

अद्यतन

$sql = "SELECT projectfiles.* FROM projects"; 
// rest of the code is the same 
+0

बहुत बढ़िया, धन्यवाद! – natli

+0

@natli आपका स्वागत है :) मूल रूप से नहीं लगता था कि यह इतना आसान होगा –

1

उपयोग क्वेरी का संक्षिप्त रूप:

$sql = "SELECT projects.id,projects.name,projects.userID FROM projects LEFT JOIN 
     projectfiles ON projects.id = projectfiles.projectID"; 
+0

काम नहीं किया, मुझे अभी भी परियोजनाओं से 3 पंक्तियां मिलती हैं जिनमें बाएं शामिल होने से कोई डेटा नहीं है। – natli

+0

आपने अपना उत्तर संपादित किया। मैं संक्षिप्त फॉर्म का उपयोग नहीं करना चाहता क्योंकि मैं सभी डेटा पुनर्प्राप्त किए गए एएस कीवर्ड का उपयोग करना चाहता हूं। – natli

1
SELECT p.*, pf.id, pf.fileId 
FROM projects p LEFT JOIN projectfiles pf 
on p.id = pf.projectID 

आप "के रूप में" का उपयोग कर सकते जैसा कि आप तो होगा क्या करना है। उप-चयन के लिए कोई ज़रूरत नहीं है।

0
$sql = "SELECT p.id,p.name,p.userID FROM projects p"; 

$sql .= " LEFT JOIN". 
    " projectfiles pf ". 
    " ON p.id = p.projectID"; 
+0

मुझे लगता है कि आपका मतलब है "चालू p.id = pf.projectID"; '? और यह काम नहीं करता है, मुझे अभी भी परियोजनाओं से 3 पंक्तियां मिलती हैं जिनमें बाएं शामिल होने से कोई डेटा नहीं है। – natli

0
$sql = "SELECT prj.id as prjId, 
    prj.name as prjName, 
    prj.userID as prjUid, 
    pf.id as pfId, 
    pf.fileID as pfFileId, 
    pf.projectID as pfProjecId 
FROM projects as prj 
LEFT JOIN projectfiles AS pf 
ON prj.id = pf.projectID"; 
संबंधित मुद्दे