2017-09-17 7 views
8

मैं एक आवेदन लिखने के लिए पर्ल नर्तकी 2 का उपयोग कर रहा हूं। MySQL में चलने वाली क्वेरी को सभी रिकॉर्ड प्रदर्शित करता है। लेकिन डांसर 2 और टेम्पलेट टूलकिट में चलने वाली एक ही क्वेरी केवल अद्वितीय रिकॉर्ड प्रदर्शित करती है।टेम्पलेट टूलकिट अद्वितीय पंक्ति प्रदर्शित करता है

उदा। जब यह mysql क्लाइंट में चलाया जाता है तो 34 रिकॉर्ड प्राप्त होते हैं।

select timing.time as Time, 
      church.church_name as Church_Name, 
      church.church_address as Address, 
      language.language_name as Language, 
      denomination.denomination_name as Denomination, 
      city.city_name as City, 
      state.state_name as State, 
      country.country_name as Country 
     from church 
     join country on church.church_countryid=country_id 
     join state on church.church_stateid=state.state_id 
     join city on church.church_cityid=city.city_id 
     join church_mass_timing on church.church_id=church_mass_timing.church_id 
     join timing on church_mass_timing.time_id=timing.time_id 
     join language on church_mass_timing.language_id=language.language_id 
     join denomination on church.church_denominationid=denomination.denomination_id 
    order by church.church_name, 
      timing.time; 

टेम्पलेट टूलकिट के साथ डांसर में वही क्वेरी 11 रिकॉर्ड लौटाती है।

get '/church_list' => sub { 
my $db = connect_db(); 
my $sql='select timing.time as Time, 
       church.church_name as Church_Name, 
       church.church_address as Address, 
       language.language_name as Language, 
       denomination.denomination_name as Denomination, 
       city.city_name as City, 
       state.state_name as State, 
       country.country_name as Country 
      from church 
      join country on church.church_countryid=country_id 
      join state on church.church_stateid=state.state_id 
      join city on church.church_cityid=city.city_id 
      join church_mass_timing on church.church_id=church_mass_timing.church_id 
      join timing on church_mass_timing.time_id=timing.time_id 
      join language on church_mass_timing.language_id=language.language_id 
      join denomination on church.church_denominationid=denomination.denomination_id 
     order by church.church_name, 
       timing.time'; 
my $sth = $db->prepare($sql) or die $db->errstr; 
$sth->execute or die $sth->errstr; 
template 'church_list.tt' => { 'title' => 'church list', 
    'site' => 'Church Timings', 
    'entries' => $sth->fetchall_hashref('Time'), 
}; 
};  
इस

church_list.tt

<% INCLUDE header.tt %> 
<ul id="content"> 
<button id="btnExport">Export to xls</button> 
<br /> 
<br /> 
<div id="table_wrapper"> 

<% IF entries.size %> 
<table border="1" cellspacing="2" widht="100%"> 
<tr> 
<th><center>Time</center></th> 
<th><center>Church name</center></th> 
<th><center>Address</center></th> 
<th><center>Language</center></th> 
<th><center>Denomination</center></th> 
<th><center>City</center></th> 
<th><center>State</center></th> 
<th><center>Country</center></th> 
</tr> 
<% FOREACH id IN entries.keys %> 
<tr> 
<td><% entries.$id.Time %></td> 
<td><% entries.$id.Church_Name %></td> 
<td><% entries.$id.Address %></td> 
<td><% entries.$id.language %></td> 
<td><% entries.$id.denomination %></td> 
<td><% entries.$id.city %></td> 
<td><% entries.$id.state %></td> 
<td><% entries.$id.country %></td> 
</tr> 
<% END %> 
</table> 
</div> 
<% ELSE %> 
<li><em>No entries here so far.</em> 
<% END %> 
</ul> 

धन्यवाद है।

+0

"पीआरआई" क्या है? उस नाम के साथ कोई कॉलम नहीं है, और डीबीआई दस्तावेज़ इसे विशेष मामले के रूप में संदर्भित नहीं करते हैं। इसे किसी संख्या की तरह भी नहीं माना जा सकता है, इसलिए इसे एक त्रुटि फेंकनी चाहिए। – simbabque

+0

गलती के लिए खेद है। समय 'प्रविष्टियां' => $ sth-> fetchall_hashref ('समय'), –

उत्तर

9

कृपया ध्यान दें कि fetchall_hashref रिटर्न हैशफ {फील्डवेल्यू => फ़ील्डशैश}।

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

कृपया इन मामलों में पंक्तियों के तीर (selectall_arrayref) का उपयोग करें।

पीएस .: इस प्रश्न में समय हमेशा अद्वितीय नहीं होता है (कभी-कभी दो रिकॉर्ड एक साथ जोड़े जा सकते हैं)।

+3

'$ dbh-> selectall_arrayref ($ sql, {slice => {}}) 'होना चाहिए, विशिष्ट होना चाहिए। यह एक एओएच पैदा करता है। – ikegami

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