[Mediawiki-l] Any help on sophisticated MySQL-Statemanet

Daniel Friesen lists at nadir-seen-fire.com
Thu Apr 14 15:12:39 UTC 2011


I'm still working a little blind, I don't have enough detailed
information and context on what exactly you're trying to do to give the
best suggestion.
I don't know if this is exactly what is wanted since I don't have data
to test it on. And I'm not sure atm if a JOIN, LEFT JOIN, or RIGHT JOIN
is best.

$res = $db->select(
	array( 'categorylinks', 'imagelinks', 'page' ),
	array( 'page_id', 'cl_to', 'COUNT(cl_to) as cl_count' ),
	array(
		'page_id' => $pidsArray,
		'page_namespace' => NS_FILE,
	),
	__METHOD__,
	array( 'GROUP BY' => 'cl_to' ),
	array(
		'imagelinks' => array( 'JOIN', 'il_from=cl_from' ),
		'page' => array( 'JOIN', 'page_title=il_to' ),
	)
);
foreach ( $res as $row ) {
	$row->page_id;
	$row->cl_to;
	$row->cl_count;
	// [...]
}

~Daniel Friesen (Dantman, Nadir-Seen-Fire) [http://daniel.friesen.name]

On 11-04-14 07:54 AM, Stefan Werthmann wrote:
> Hey! Wow!
>
> yes it's very blaming. Your code looks mutch more better!
>
> The $e was just for convenience.
>
> Actually I need something like this as end result:
>
> for($i=1;$i<count($pidsArray);$i++):
>             $qString = "SELECT cl_to,count(*) as cl_count from
> ".$wgDBprefix."categorylinks where cl_from='".$pidsArray[$i]."' group by
> cl_to having cl_count >0";
>             $wgRes   = $db->query($qString);
>             while($row = $db->fetchObject($wgRes)):
>                 $categories[$i]['cl_to']=$row->cl_to;
>                 $categories[$i]['cl_count']=$row->cl_count; 
>             endwhile;
>         endfor;   
>
> Is there a way to modify your code in this direction?



More information about the MediaWiki-l mailing list