Unix Technical Forum

Converting Query from MSSQL to MySQL

This is a discussion on Converting Query from MSSQL to MySQL within the MySQL forums, part of the Database Server Software category; --> I have changed a database from SQL to MySQL and now my usual query doesn't work, can anyone help ...


Go Back   Unix Technical Forum > Database Server Software > MySQL

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 02-28-2008, 10:27 AM
Gordon Muir
 
Posts: n/a
Default Converting Query from MSSQL to MySQL

I have changed a database from SQL to MySQL and now my usual query
doesn't work, can anyone help with how to convert it.

Thanks

Gordon

Query

SELECT 1 as Tag, NULL as Parent,
NULL as [vehiclestate.2.Alias.element],
NULL as [vehiclestate.2.Day.element],
NULL as [vehiclestate.2.Month.element],
NULL as [vehiclestate.2.Year.element],
NULL as [vehiclestate.2.Longitude.element],
NULL as [vehiclestate!2!Latitude!element],
NULL as [vehiclestate!2!Street!element],
NULL as [vehiclestate!2!City!element],
NULL as [vehiclestate!2!Zip_Code!element],
NULL as [vehiclestate!2!Speed!element],
NULL as [vehiclestate!2!PC_Time!element],
NULL as [vehiclestate!1!PC_Date!element]
>From vehiclestate

INNER JOIN (
SELECT 2 as Tag, 1 as Parent,
Alias, Max(Date_Time) As Maxreport
From vehiclestate
Group By Alias
) As A
On vehiclestate.Alias = A.Alias
And vehiclestate.Date_Time = A.Maxreport
UNION
SELECT 2 as Tag, 1 as Parent,
vehiclestate.Alias as [vehiclestate!2!Alias!element],
Day as [vehiclestate!2!Day!element],
Month as [vehiclestate!2!Month!element],
Year as [vehiclestate!2!Year!element],
Longitude as [vehiclestate!2!Longitude!element],
Latitude as [vehiclestate!2!Latitude!element],
Street as [vehiclestate!2!Street!element],
City as [vehiclestate!2!City!element],
Zip_Code as [vehiclestate!2!Zip_Code!element],
Speed as [vehiclestate!2!Speed!element],
PC_Time as [vehiclestate!2!PC_Time!element],
PC_Date as [vehiclestate!2!PC_Date!element]
from vehiclestate
INNER JOIN (
SELECT 2 as Tag, 1 as Parent,
Alias, Max(Date_Time) As Maxreport
From vehiclestate
WHERE (PC_Date >= DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0))
AND (PC_Date < DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 1))
Group By Alias
) As A
On vehiclestate.Alias = A.Alias
And vehiclestate.Date_Time = A.Maxreport

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 02-28-2008, 10:27 AM
Michael Austin
 
Posts: n/a
Default Re: Converting Query from MSSQL to MySQL

Gordon Muir wrote:
> I have changed a database from SQL to MySQL and now my usual query
> doesn't work, can anyone help with how to convert it.
>
> Thanks
>
> Gordon
>
> Query
>
> SELECT 1 as Tag, NULL as Parent,
> NULL as [vehiclestate.2.Alias.element],
> NULL as [vehiclestate.2.Day.element],
> NULL as [vehiclestate.2.Month.element],
> NULL as [vehiclestate.2.Year.element],
> NULL as [vehiclestate.2.Longitude.element],
> NULL as [vehiclestate!2!Latitude!element],
> NULL as [vehiclestate!2!Street!element],
> NULL as [vehiclestate!2!City!element],
> NULL as [vehiclestate!2!Zip_Code!element],
> NULL as [vehiclestate!2!Speed!element],
> NULL as [vehiclestate!2!PC_Time!element],
> NULL as [vehiclestate!1!PC_Date!element]
>>From vehiclestate

> INNER JOIN (
> SELECT 2 as Tag, 1 as Parent,
> Alias, Max(Date_Time) As Maxreport
> From vehiclestate
> Group By Alias
> ) As A
> On vehiclestate.Alias = A.Alias
> And vehiclestate.Date_Time = A.Maxreport
> UNION
> SELECT 2 as Tag, 1 as Parent,
> vehiclestate.Alias as [vehiclestate!2!Alias!element],
> Day as [vehiclestate!2!Day!element],
> Month as [vehiclestate!2!Month!element],
> Year as [vehiclestate!2!Year!element],
> Longitude as [vehiclestate!2!Longitude!element],
> Latitude as [vehiclestate!2!Latitude!element],
> Street as [vehiclestate!2!Street!element],
> City as [vehiclestate!2!City!element],
> Zip_Code as [vehiclestate!2!Zip_Code!element],
> Speed as [vehiclestate!2!Speed!element],
> PC_Time as [vehiclestate!2!PC_Time!element],
> PC_Date as [vehiclestate!2!PC_Date!element]
> from vehiclestate
> INNER JOIN (
> SELECT 2 as Tag, 1 as Parent,
> Alias, Max(Date_Time) As Maxreport
> From vehiclestate
> WHERE (PC_Date >= DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0))
> AND (PC_Date < DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 1))
> Group By Alias
> ) As A
> On vehiclestate.Alias = A.Alias
> And vehiclestate.Date_Time = A.Maxreport
>


There are several methods one described in the docs...
http://dev.mysql.com/doc/refman/5.0/...functions.html
Look at "case" and IFNULL.
Case is more ansi standard and will allow you to move this to almost
any other database engine - like oracle.


Michael.
email address is bogus.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 10:02 PM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0
www.UnixAdminTalk.com