2010-01-16 13 views
18

मुझे नीचे सूचीबद्ध निम्न त्रुटि मिलती है और यह सोच रहा था कि मैं इस समस्या को कैसे ठीक करूं।MySQL और PHP - अद्वितीय तालिका/उपनाम

Not unique table/alias: 'grades' 

यहां कोड है जो मुझे लगता है कि मुझे समस्या दे रही है।

function getRating(){ 
$dbc = mysqli_connect ("localhost", "root", "", "sitename"); 

$page = '3'; 

$sql1 = "SELECT COUNT(*) 
     FROM articles_grades 
     WHERE users_articles_id = '$page'"; 

$result = mysqli_query($dbc,$sql1); 

if (!mysqli_query($dbc, $sql1)) { 
     print mysqli_error($dbc); 
     return; 
} 

$total_ratings = mysqli_fetch_array($result); 

$sql2 = "SELECT COUNT(*) 
     FROM grades 
     JOIN grades ON grades.id = articles_grades.grade_id 
     WHERE articles_grades.users_articles_id = '$page'"; 

$result = mysqli_query($dbc,$sql2); 

if (!mysqli_query($dbc, $sql2)) { 
     print mysqli_error($dbc); 
     return; 
} 

$total_rating_points = mysqli_fetch_array($result); 
if(!empty($total_rating_points) && !empty($total_ratings)){ 
// set the width of star for the star rating 
$rating = (round($total_rating_points/$total_ratings,1)) * 10; 
echo $rating; 
} else { 
    $rating = 100; 
    echo $rating; 
} 
} 

उत्तर

29

समस्या यहां हो रहा है:

SELECT COUNT(*) 
FROM grades 
JOIN grades ON grades.id = articles_grades.grade_id 
WHERE articles_grades.users_articles_id = '$page'" 

आप खुद को तालिका ग्रेड में शामिल होने की कोशिश कर रहे हैं। आप शायद articles_grades के साथ शामिल होना चाहते थे।

+1

ऑन कंडीशन का सुझाव है कि यह एक टाइपो – VolkerK

+0

है, यह बहुत पुराना उत्तर प्रतीत होता है लेकिन मुझे लगता है कि 'जॉइन ग्रेड' होना चाहिए 'जॉइन ग्रेड' होना चाहिए 'articles articles_grades' –

0

मैं पतला हूं कि $ sql2 क्वेरी में दूसरी तालिका ग्रेड नहीं है लेकिन article_grades है। तो यह हो जाएगा:

"SELECT COUNT(*) 
     FROM grades 
     JOIN articles_grades ON grades.id = articles_grades.grade_id 
     WHERE articles_grades.users_articles_id = '$page'" 
2

यह कह रहा है कि क्योंकि आप दो बार

5

क्वेरी में तालिका नाम ग्रेड है अगर आप एक ही नाम दो बार का उपयोग कर रहे एक अन्य नाम का उपयोग करने की आवश्यकता है:

SELECT FROM grades g1 ... 
JOIN grades g2 ON g1.id = g2.grade_id ... 

सुनिश्चित करें कि आप को उसी नाम का उपयोग करने के लिए का इरादा रखते हैं, और गलती से दो बार एक ही नाम दर्ज नहीं किया है।

+0

इससे मुझे कुछ असंबद्ध समस्या में मदद मिली। धन्यवाद! – jordanm

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