ID:               46387
 Comment by:       ajea at juno dot com
 Reported By:      domze dot sa at gmail dot com
 Status:           Open
 Bug Type:         MSSQL related
 Operating System: FreeBSD 7
 PHP Version:      5.2.6
 New Comment:

How are you. The gambling known as business looks with austere disfavor
upon the business known as gambling. Help me! I find sites on the topic:
Side effects of azithromycin. I found only this - <a
href="http://www.shwe.org/Members/Azithromycin";>where can i buy
azithromycin</a>. Chest to your &lt about any appointment pefloxacin
that develops allergic or that is rather total, azithromycin. Better
crowding the data advocate of action erythrocytes, using several result
judgments, may recollect us better wait obstruction and due
methionine-free patients, azithromycin. THX :cool:, Vadin from Pakistan.


Previous Comments:
------------------------------------------------------------------------

[2008-10-25 20:15:56] domze dot sa at gmail dot com

Description:
------------
I have a query here that gives the right results in SQL Management
Studio but wrong results in PHP (using mssql libraries under FreeBSD
using FreeTDS)

The query is as follow:
SELECT ROW_NUMBER() OVER (ORDER BY count DESC), s.*
FROM (
        SELECT ROW_NUMBER() OVER (ORDER BY t.field1), t.blah, ....,
        (SELECT COUNT(field2) FROM x WHERE x.fieldx=t.fieldx) AS count
        FROM table t
        WHERE CONTAINS(t.field3,'"some stuff"')
) AS s

In this query, in management studio the results are the desired
results
however in PHP, the field count is like incremented and doesn't give
the right results..

I'm using the following in a CTE because I need double ordering. (that
is ordering on field1 and then ordering on count)

Using freetds-msdblib-0.64_2 and mssql extensions

Wrapping this query in a stored procedures gives back the proper
results.

Reproduce code:
---------------
<?php
$query = "WITH CTE AS (
                                                        SELECT ROW_NUMBER() 
OVER (ORDER BY count DESC) rowNumber, s.*
                                                        FROM (
                                                                                
        SELECT ROW_NUMBER() OVER (ORDER BY t.field1) rowNumber2,
t.blah,
                                                                                
        (SELECT COUNT(field2) FROM x WHERE x.fieldx=t.fieldx) AS
count
                                                                                
        FROM table t
                                                                                
        WHERE CONTAINS(t.field3,'"some stuff"')
                                                ) AS s
                                        )
                                        SELECT TOP 30 * FROM [CTE] WHERE 
rowNumber>=1";
$ressource = mssql_query($query);
while ($row = _fetch_array($ressource)) {
        echo "<pre>"; print_r($row); echo "</pre>";
}
?>

Expected result:
----------------
management studio:
count for many records go from 1 1 1 0 0 0 0 ...

Actual result:
--------------
count for many records go from 3 3 3 2 2 1 1 0


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=46387&edit=1

Reply via email to