Seite 1 von 1

phpbb: News Mod - 2 Abfragen mit count() aus 1 tabelle?

Verfasst: 28.12.2002 12:17
von Jason
Hi,
ich habe mir einen kleinen News Mod fürs phpbb gebastelt,die tabelle dafür ist wie folgt aufgebaut:

Code: Alles auswählen

news_id | news_typ | user_id | news_text
Bei news_typ gibt es 2 typen einmal die kommentierten News ( Typ: 1 ) und einmal die unkommentierten News (Typ: 2) nun möchte die Anzahl der kommentierten und der unkommentierten News des Users der grade Online ist aus der DB auslesen wenn ich nur die kommentierten auslesen will funzt es wenn ich es so mache:

Code: Alles auswählen

$sql = "SELECT user_id, count(*) AS total
        FROM " . NEWS_TABLE . "
        WHERE news_type = 1 AND user_id = " . $userdata['user_id'];
if ( !$result = $db->sql_query($sql) )
                {
                        message_die(GENERAL_ERROR, 'Could not get user id and username from users table', '', __LINE__, __FILE__, $sql);
                }
if ( $total = $db->sql_fetchrow($result) )
   {
                $comment_news = $total['total'];
   }
Nun habe ich es so probiert um auch die Anzahl der unkommentierten auszulesen:

Code: Alles auswählen

$sql = "SELECT user_id, count(*) AS comment, count(n.*) AS uncomment
        FROM " . NEWS_TABLE . "
        LEFT JOIN " NEWS_TABLE . " n ON n.news_type = 2 AND user_id = '.$userdata['user_id'].'
        WHERE news_type = 1 AND user_id = " . $userdata['user_id'];
if ( !$result = $db->sql_query($sql) )
                {
                        message_die(GENERAL_ERROR, 'Could not get user id and username from users table', '', __LINE__, __FILE__, $sql);
                }

if ( $comment = $db->sql_fetchrow($result) )
   {
                $comment = $comment['comment'];
   }

if ( $uncomment = $db->sql_fetchrow($result) )
   {
                $uncomment = $uncomment['uncomment'];
   }
aber des funkt. irgendwie net!

Ich hoffe mal es hat jemand verstanden was ich meine und kann mir helfen :)

Grüße Jason

Verfasst: 29.12.2002 13:56
von Jason
Niemand der mir helfen kann????? :cry:

Jason

Verfasst: 29.12.2002 17:44
von Pyramide

Code: Alles auswählen

$sql = "SELECT count(*) AS total FROM " . NEWS_TABLE . " WHERE news_type = 1 AND user_id = " . $userdata['user_id'];
if ( !$result = $db->sql_query($sql) ) 
{ 
    message_die(GENERAL_ERROR, 'Could not get user id and username from users table', '', __LINE__, __FILE__, $sql); 
} 
if ( $total = $db->sql_fetchrow($result) ) 
{ 
    $comment = $total['total']; 
}

$sql = "SELECT count(*) AS total FROM " . NEWS_TABLE . " WHERE news_type = 2 AND user_id = " . $userdata['user_id'];
if ( !$result = $db->sql_query($sql) ) 
{ 
    message_die(GENERAL_ERROR, 'Could not get user id and username from users table', '', __LINE__, __FILE__, $sql); 
} 
if ( $total = $db->sql_fetchrow($result) ) 
{ 
    $uncomment = $total['total']; 
}

Verfasst: 30.12.2002 10:22
von Jason
hmm geht das nur über 2 separate Abfragen?
Eigentlich hatte ich vor noch 4 Weitere News Typen zu definieren das hieße dann ja ich müsste 6 sql Abfragen dafür machen :o

Grüße Jason

Verfasst: 30.12.2002 16:04
von Pyramide

Code: Alles auswählen

$sql = "SELECT news_type, count(*) AS anzahl FROM " . NEWS_TABLE . " WHERE user_id = " . $userdata['user_id'] . " GROUP BY news_type; 
if ( !$result = $db->sql_query($sql) ) 
{ 
    message_die(GENERAL_ERROR, 'Could not get user id and username from users table', '', __LINE__, __FILE__, $sql); 
}
$news_count = array();
while ( $news_row = $db->sql_fetchrow($result) ) 
{ 
    $news_count[$news_row['news_type']] = $news_row['anzahl'];
}
Danach ist in $news_count[1] die Anzahl der kommentierten News und in $news_count[2] die Anzahl der unkommentierten.