Author |
Topic |
metroix
Starting Member
16 Posts |
Posted - 2008-07-10 : 20:04:54
|
this oneselect characters.id, characters.name,COALESCE(MAX(CASE WHEN inventoryitems.position = -110 THEN inventoryitems.itemid ELSE NULL END),MAX(CASE WHEN inventoryitems.position = -10 THEN inventoryitems.itemid ELSE NULL END)) as HATfrom characters join inventoryitems on characters.id = inventoryitems.characteridwhere inventoryitems.inventorytype = -1and (inventoryitems.position = -110 or inventoryitems.position = -10)GROUP BY characters.name and this oneselect characters.id, characters.name,COALESCE(MAX(CASE WHEN inventoryitems.position = -107 THEN inventoryitems.itemid ELSE NULL END),MAX(CASE WHEN inventoryitems.position = -7 THEN inventoryitems.itemid ELSE NULL END)) as HATfrom characters join inventoryitems on characters.id = inventoryitems.characteridwhere inventoryitems.inventorytype = -1and (inventoryitems.position = -107 or inventoryitems.position = -7)GROUP BY characters.name |
|
sodeep
Master Smack Fu Yak Hacker
7174 Posts |
Posted - 2008-07-10 : 20:24:41
|
You can use Union and you don't need Coalesce function. |
 |
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2008-07-12 : 01:35:48
|
You dont need two queries at all. you can merge them into 1select characters.id, characters.name,COALESCE(MAX(CASE WHEN inventoryitems.position = -110 THEN inventoryitems.itemid ELSE NULL END),MAX(CASE WHEN inventoryitems.position = -107 THEN inventoryitems.itemid ELSE NULL END),MAX(CASE WHEN inventoryitems.position = -10 THEN inventoryitems.itemid ELSE NULL END),MAX(CASE WHEN inventoryitems.position = -7 THEN inventoryitems.itemid ELSE NULL END)) as HATfrom characters join inventoryitems on characters.id = inventoryitems.characteridwhere inventoryitems.inventorytype = -1and (inventoryitems.position = -110 or inventoryitems.position = -10or inventoryitems.position = -107 or inventoryitems.position = -7)GROUP BY characters.id, characters.name |
 |
|
metroix
Starting Member
16 Posts |
Posted - 2008-07-17 : 08:15:23
|
yeah but i have to combine like 10 scripts like that so i ill be better if i know how to compine |
 |
|
madhivanan
Premature Yak Congratulator
22864 Posts |
Posted - 2008-07-17 : 08:46:41
|
quote: Originally posted by metroix yeah but i have to combine like 10 scripts like that so i ill be better if i know how to compine
Query1union allQuery2union all...MadhivananFailing to plan is Planning to fail |
 |
|
metroix
Starting Member
16 Posts |
Posted - 2008-07-17 : 11:13:23
|
kk look each queri has diferent colum using union all is giving me just 1 colum for everything =/ how i fix this? |
 |
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2008-07-17 : 11:59:45
|
quote: Originally posted by metroix kk look each queri has diferent colum using union all is giving me just 1 colum for everything =/ how i fix this?
didnt get that. can you explain your problem with some sample data? |
 |
|
metroix
Starting Member
16 Posts |
Posted - 2008-07-17 : 13:04:33
|
ok if i use this scriptselect characters.id, characters.name,COALESCE(MAX(CASE WHEN inventoryitems.position = -110 THEN inventoryitems.itemid ELSE NULL END),MAX(CASE WHEN inventoryitems.position = -10 THEN inventoryitems.itemid ELSE NULL END)) as HATfrom characters join inventoryitems on characters.id = inventoryitems.characteridwhere inventoryitems.inventorytype = -1and (inventoryitems.position = -110 or inventoryitems.position = -10)GROUP BY characters.namewill give me a column called HATselect characters.id, characters.name,COALESCE(MAX(CASE WHEN inventoryitems.position = -107 THEN inventoryitems.itemid ELSE NULL END),MAX(CASE WHEN inventoryitems.position = -7 THEN inventoryitems.itemid ELSE NULL END)) as HAT2from characters join inventoryitems on characters.id = inventoryitems.characteridwhere inventoryitems.inventorytype = -1and (inventoryitems.position = -107 or inventoryitems.position = -7)GROUP BY characters.nameand this one here will give me a column called HAT2what i want is combino those script and get 1 column called hat and another called hat2if i use UNION ALL that will give me just 1 columni want to combine them but got 2 column beside 1 |
 |
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2008-07-17 : 13:10:11
|
ok. You should have given the sample output in beginning. use the below for getting two valuesSELECT t1.id,t1.name,t1.HAT,t2.HAT2FROM(select characters.id, characters.name,COALESCE(MAX(CASE WHEN inventoryitems.position = -110 THEN inventoryitems.itemid ELSE NULL END),MAX(CASE WHEN inventoryitems.position = -10 THEN inventoryitems.itemid ELSE NULL END)) as HATfrom characters join inventoryitems on characters.id = inventoryitems.characteridwhere inventoryitems.inventorytype = -1and (inventoryitems.position = -110 or inventoryitems.position = -10)GROUP BY characters.name)t1INNER JOIN(select characters.id, characters.name,COALESCE(MAX(CASE WHEN inventoryitems.position = -107 THEN inventoryitems.itemid ELSE NULL END),MAX(CASE WHEN inventoryitems.position = -7 THEN inventoryitems.itemid ELSE NULL END)) as HAT2from characters join inventoryitems on characters.id = inventoryitems.characteridwhere inventoryitems.inventorytype = -1and (inventoryitems.position = -107 or inventoryitems.position = -7)GROUP BY characters.name)t2ON t1.id=t2.idAND t1.name=t2.name |
 |
|
metroix
Starting Member
16 Posts |
Posted - 2008-07-17 : 14:02:59
|
that not working for me cuz if some1 dosent have what one of the script give and has one from the other that person will be exclude from the resultsEx:script 1 give HATsciprt 2 give HAT2Peter has hat and hat 2Max has just hatand Jessica has just hat 2the result of the query will be just PETER cuz he is the only that has both thats why this method:SELECT t1.id,t1.name,t1.HAT,t2.HAT2FROM(select characters.id, characters.name,COALESCE(MAX(CASE WHEN inventoryitems.position = -110 THEN inventoryitems.itemid ELSE NULL END),MAX(CASE WHEN inventoryitems.position = -10 THEN inventoryitems.itemid ELSE NULL END)) as HATfrom characters join inventoryitems on characters.id = inventoryitems.characteridwhere inventoryitems.inventorytype = -1and (inventoryitems.position = -110 or inventoryitems.position = -10)GROUP BY characters.name)t1INNER JOIN(select characters.id, characters.name,COALESCE(MAX(CASE WHEN inventoryitems.position = -107 THEN inventoryitems.itemid ELSE NULL END),MAX(CASE WHEN inventoryitems.position = -7 THEN inventoryitems.itemid ELSE NULL END)) as HAT2from characters join inventoryitems on characters.id = inventoryitems.characteridwhere inventoryitems.inventorytype = -1and (inventoryitems.position = -107 or inventoryitems.position = -7)GROUP BY characters.name)t2ON t1.id=t2.idAND t1.name=t2.name dont works for me but thax for trycan i have ur messenger so i can explain to u what a want better. |
 |
|
|