Unix Technical Forum

SEO

vBulletin Search Engine Optimization


Go Back   Unix Technical Forum > Database Server Software > Microsoft SQL Server > SQL Server

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 02-29-2008, 07:52 PM
KoliPoki
 
Posts: n/a
Default Query: union on self

Hello every body.

I have a small issue.

Problem: I have a table with 4 descriptor columns (type). I need to
formulate a query to retrieve a count for each type so I can group
by...etc. The view I have works, but doesn't work when I supplement the
query with some functions... they just don't like the UNION. The real
problem is I can't change any of the udf's or queries, just the view.
The view is inner joined back on to the primary table 'qt_ins' again
and a heap of other tables. But for this post and to not complicate it
too much I've just included the primary table and the view...
Also my querys work if I don't put a where clause on for the VIEW. eg:
.... and cv.type = 'Environmental'.... for some reason with a clause it
gets stuck in an *infinite loop.


Conditions: The table structure cannot be changed in anyway. The
view/query must return 2 columns qi_id & type.

I considered creating a function to return the Types but then I figured
I would ask you folks for a better way.

Any help with the view appreciated.

Thank you.

The below will create the table, with sample data and the view.

---------------------------Start
Query--------------------------------------------
CREATE TABLE [dbo].[qt_ins] (
[qi_id] [int] NOT NULL ,
[qi_injury] [bit] NULL ,
[qi_environmental] [bit] NULL ,
[qi_equipment_damage] [bit] NULL ,
[qi_vehicle] [bit] NULL
) ON [PRIMARY]
GO

INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (20,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (21,0,1,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (23,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (24,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (25,1,1,1,1)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (26,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (27,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (28,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (29,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (30,1,1,1,1)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (31,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (32,1,1,1,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (33,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (34,1,1,1,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (35,1,0,0,1)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (36,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (37,0,0,0,1)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (38,0,0,0,1)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (39,0,1,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (40,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (41,0,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (42,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (43,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (44,0,1,1,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (45,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (46,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (47,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (48,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (49,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (50,1,0,1,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (51,0,0,1,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (52,0,1,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (53,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (54,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (55,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (56,1,1,1,1)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (57,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (58,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (59,0,1,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (60,0,1,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (61,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (62,0,1,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (63,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (64,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (65,1,0,1,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (66,1,0,0,1)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (67,1,1,1,1)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (68,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (69,1,0,0,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (70,1,1,1,1)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (71,1,1,1,1)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (72,1,1,1,1)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (73,0,0,1,0)
INSERT INTO qt_ins
(qi_id,qi_injury,qi_environmental,qi_equipment_dam age,qi_vehicle)
VALUES (81,1,0,0,0)
GO


CREATE VIEW dbo.v_qt_in_type
AS
SELECT qi_id, 'Injury' AS type FROM qt_ins WHERE qi_injury = 1
UNION all
SELECT qi_id, 'Environmental' AS type FROM qt_ins WHERE
qi_environmental = 1
UNION all
SELECT qi_id, 'Equipment damage' AS type FROM qt_ins WHERE
qi_equipment_damage = 1
UNION all
SELECT qi_id, 'Vehicle' AS type FROM qt_ins WHERE qi_vehicle = 1
GO

select count(*),type from v_qt_in_type group by type
---------------------------END
QUERY--------------------------------------

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 02-29-2008, 07:52 PM
Erland Sommarskog
 
Posts: n/a
Default Re: Query: union on self

KoliPoki (rayone@gmail.com) writes:
> Problem: I have a table with 4 descriptor columns (type). I need to
> formulate a query to retrieve a count for each type so I can group
> by...etc. The view I have works, but doesn't work when I supplement the
> query with some functions... they just don't like the UNION. The real
> problem is I can't change any of the udf's or queries, just the view.
> The view is inner joined back on to the primary table 'qt_ins' again
> and a heap of other tables. But for this post and to not complicate it
> too much I've just included the primary table and the view...
> Also my querys work if I don't put a where clause on for the VIEW. eg:
> ... and cv.type = 'Environmental'.... for some reason with a clause it
> gets stuck in an *infinite loop.


I'm afraid that it's impossible to assist with the information you have
given. First you say "don't like the UNION", which indicates that you
have some trivial syntax error. Then you talk about infinite loops,
which indicates that the query runs for a very long time.

You posted a repro, which is great. Unfortunately, that repro appears to
work without any problems. If you instead post a repro that demonstrates
the problem, it's a lot easier to say what is going on.

--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/pro...ads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinf...ons/books.mspx
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 02-29-2008, 07:53 PM
KoliPoki
 
Posts: n/a
Default Re: Query: union on self

Erland, thank you for your reply.

That's correct the UNION doesn't work with my query.
Unfortunately it's very hard to give you all the code as there are 3
functions and another 12 tables, 2 with hierarchical
(parent/child/lineage) data (Business units, Job titles).

There are no syntax errors, the problem is that my query never
returns... like it's stuck in a loop. If I remove the union like:
-----------------------------------------------
CREATE VIEW dbo.v_qt_in_type
AS
SELECT qi_id, 'Environmental' AS type FROM qt_ins WHERE
qi_environmental = 1
-------------------------------------------------
it works fine and fast, but is obviously incorrect as it only returns
records of 1 type.


So the problem is....

Can any one think of another way to write the below query without the
UNION

---------------Query to write in a different way---------------

SELECT qi_id, 'Injury' AS type FROM qt_ins WHERE qi_injury = 1
UNION all
SELECT qi_id, 'Environmental' AS type FROM qt_ins WHERE
qi_environmental = 1
UNION all
SELECT qi_id, 'Equipment damage' AS type FROM qt_ins WHERE
qi_equipment_damage = 1
UNION all
SELECT qi_id, 'Vehicle' AS type FROM qt_ins WHERE qi_vehicle = 1

------------------------END QUERY-------------------------------------

Thanks for your help, and apologies for not being able to provider the
full context of the issue.

R.

Erland Sommarskog wrote:
> KoliPoki (rayone@gmail.com) writes:
> > Problem: I have a table with 4 descriptor columns (type). I need to
> > formulate a query to retrieve a count for each type so I can group
> > by...etc. The view I have works, but doesn't work when I supplement the
> > query with some functions... they just don't like the UNION. The real
> > problem is I can't change any of the udf's or queries, just the view.
> > The view is inner joined back on to the primary table 'qt_ins' again
> > and a heap of other tables. But for this post and to not complicate it
> > too much I've just included the primary table and the view...
> > Also my querys work if I don't put a where clause on for the VIEW. eg:
> > ... and cv.type = 'Environmental'.... for some reason with a clause it
> > gets stuck in an *infinite loop.

>
> I'm afraid that it's impossible to assist with the information you have
> given. First you say "don't like the UNION", which indicates that you
> have some trivial syntax error. Then you talk about infinite loops,
> which indicates that the query runs for a very long time.
>
> You posted a repro, which is great. Unfortunately, that repro appears to
> work without any problems. If you instead post a repro that demonstrates
> the problem, it's a lot easier to say what is going on.
>
> --
> Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
>
> Books Online for SQL Server 2005 at
> http://www.microsoft.com/technet/pro...ads/books.mspx
> Books Online for SQL Server 2000 at
> http://www.microsoft.com/sql/prodinf...ons/books.mspx


Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #4 (permalink)  
Old 02-29-2008, 07:53 PM
Alexander Kuznetsov
 
Posts: n/a
Default Re: Query: union on self

You can try something like this:

SELECT qi_id,
case
when qi_injury = 1 then 'Injury'
when qi_environmental = 1 then 'environmental'
when qi_Equipment damage = 1 then 'Equipment damage'
when qi_Vehicle = 1 then 'Vehicle'
end
AS type
FROM qt_ins
WHERE (qi_injury = 1) or (qi_environmental = 1 ) or
(qi_equipment_damage = 1)
or (qi_vehicle = 1)

But it would be interesting to see why is your original query slow. Any
additional infotrmation?

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #5 (permalink)  
Old 02-29-2008, 07:54 PM
Thomas R. Hummel
 
Posts: n/a
Default Re: Query: union on self

KoliPoki wrote:
> Erland, thank you for your reply.
>
> That's correct the UNION doesn't work with my query.
> Unfortunately it's very hard to give you all the code as there are 3
> functions and another 12 tables, 2 with hierarchical
> (parent/child/lineage) data (Business units, Job titles).
>
> There are no syntax errors, the problem is that my query never
> returns... like it's stuck in a loop. If I remove the union like:
> -----------------------------------------------
> CREATE VIEW dbo.v_qt_in_type
> AS
> SELECT qi_id, 'Environmental' AS type FROM qt_ins WHERE
> qi_environmental = 1
> -------------------------------------------------
> it works fine and fast, but is obviously incorrect as it only returns
> records of 1 type.
>
>
> So the problem is....
>
> Can any one think of another way to write the below query without the
> UNION
>
> ---------------Query to write in a different way---------------
>
> SELECT qi_id, 'Injury' AS type FROM qt_ins WHERE qi_injury = 1
> UNION all
> SELECT qi_id, 'Environmental' AS type FROM qt_ins WHERE
> qi_environmental = 1
> UNION all
> SELECT qi_id, 'Equipment damage' AS type FROM qt_ins WHERE
> qi_equipment_damage = 1
> UNION all
> SELECT qi_id, 'Vehicle' AS type FROM qt_ins WHERE qi_vehicle = 1
>
> ------------------------END QUERY-------------------------------------
>
> Thanks for your help, and apologies for not being able to provider the
> full context of the issue.


Alexander has given what I think is a pretty good solution to this. To
the original problem though, did you get a query plan for the select
statement that ran for so long? What was the query plan doing?

One thing to keep in mind is that if you are using UDFs, they can often
dramatically impact a querie's performance. It's impossible to know
without your data and the full table, UDF, and view SQL code, but maybe
when you use the UNION with the UDF it has to actually select the
entire dataset, applying the UDF to each row and then performing the
UNION operations before it is able to filter out rows based on your
WHERE clause criteria. I'm afraid that I don't know how smart SQL
Server is when you do a union like this within a view and then select
from the view based on a column that is calculated within the view.
Even if the UDF has nothing to do with it, it may be that when you
select WHERE qi_environmental = 1 then SQL Server can use an index, but
when you have a column hard-coded the way that you do in the unions it
can no longer use that index when you do WHERE type = 'Environmental'.

Anyway, just some stuff to look into for you.

-Tom.

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #6 (permalink)  
Old 02-29-2008, 07:54 PM
Thomas R. Hummel
 
Posts: n/a
Default Re: Query: union on self

Alexander Kuznetsov wrote:
> You can try something like this:
>
> SELECT qi_id,
> case
> when qi_injury = 1 then 'Injury'
> when qi_environmental = 1 then 'environmental'
> when qi_Equipment damage = 1 then 'Equipment damage'
> when qi_Vehicle = 1 then 'Vehicle'
> end
> AS type
> FROM qt_ins
> WHERE (qi_injury = 1) or (qi_environmental = 1 ) or
> (qi_equipment_damage = 1)
> or (qi_vehicle = 1)
>
> But it would be interesting to see why is your original query slow. Any
> additional infotrmation?


I just posted that this was a good solution in another post, but now it
occurs to me that it will not return the same resultset as the original
poster's solution. The query above will return only one row per qi_id,
but the original solution could return up to four for each qi_id.

-Tom.

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #7 (permalink)  
Old 02-29-2008, 07:54 PM
Alexander Kuznetsov
 
Posts: n/a
Default Re: Query: union on self

Thomas,

thanks for the correction. Untested again, no DDL, no DML!

SELECT qi_id, t.c AS type
FROM qt_ins join
(
select 1 n, 'Injury' c
union all
select 2 n, 'environmental' c
union all
select 3 n, 'Equipment damage' c
union all
select 4 n, 'Vehicle' c
) t
on (qi_injury = 1 and t.n=1) or (qi_environmental = 1 and t.n=2) or
(qi_equipment_damage = 1 and t.n=3)
or (qi_vehicle = 1 and t.n=4)

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #8 (permalink)  
Old 02-29-2008, 07:54 PM
KoliPoki
 
Posts: n/a
Default Re: Query: union on self

Thanks Folks.

I was dubious of using a derived table, as I had already tried wrapping
some of the logic in derived table and it didn't work, but I never
tried using a derived table for the view...guess what, it work!

Why, I'm still not sure.

The query was never returning when the view and a function were used in
the clause of the query.

Example of not working:
select qi_id, .....
from qt_ins q
inner join v_qt_in_type v on q.qu_id = v.qi_id
inner join ...
inner join ...
....
where
..... and
q.qi_mr_emp_no in(select emp_no from udf_qi_my_subordinates('49549'))
and
q.qi_observation_date>=dateadd(yy,-1,current_timestamp) and
v.type = 'Environmental' and
dbo.udf_qi_em_return_above_reportsto2_1(q.qi_mr_em p_no,'49549') = 'GM
OH&S'


But would return if either
dbo.udf_qi_em_return_above_reportsto2_1(q.qi_mr_em p_no,'49549') = 'GM
OH&S' or v.type = 'Environmental' was removed it would work even if
they were referenced the select string.

Example working:
select qi_id, .....
from qt_ins q
inner join v_qt_in_type v on q.qu_id = v.qi_id
inner join ...
inner join ...
....
where
..... and
q.qi_mr_emp_no in(select emp_no from udf_qi_my_subordinates('49549'))
and
q.qi_observation_date>=dateadd(yy,-1,current_timestamp) and
--v.type = 'Environmental' and
dbo.udf_qi_em_return_above_reportsto2_1(q.qi_mr_em p_no,'49549') = 'GM
OH&S'

Thanks Alexander for your help.


Alexander Kuznetsov wrote:
> Thomas,
>
> thanks for the correction. Untested again, no DDL, no DML!
>
> SELECT qi_id, t.c AS type
> FROM qt_ins join
> (
> select 1 n, 'Injury' c
> union all
> select 2 n, 'environmental' c
> union all
> select 3 n, 'Equipment damage' c
> union all
> select 4 n, 'Vehicle' c
> ) t
> on (qi_injury = 1 and t.n=1) or (qi_environmental = 1 and t.n=2) or
> (qi_equipment_damage = 1 and t.n=3)
> or (qi_vehicle = 1 and t.n=4)


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 08:04 AM.


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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638