|
You probably still want a JOIN; avoid using IN for anything other than literal lists.
|
|
|
|
|
Using a JOIN will improve speed?
|
|
|
|
|
It has in my experience. And much more flexible.
|
|
|
|
|
I'll have to experiment in that direction then. This is a nasty complicated app and I'll need all the little speed boosts I can get.
Thanks!
|
|
|
|
|
I can imagine. Your first task should be to eliminate the subqueries; they don't benefit from indices.
I had to change some of my JOINs the other day because the statements seemed to just sit there, now they zip along.
|
|
|
|
|
Hi,
Didn't test this so there may be typos but try something like this:
SELECT *
FROM UC
WHERE uc_key IN (SELECT mo_Key
FROM MO
WHERE (mo_MoKey = @Key1 AND mo_Value = @Value1)
OR (mo_MoKey = @Key2 AND mo_Value = @Value2)
GROUP BY mo_Key
HAVING COUNT(*) > 2);
Hope this helps,
Mika
|
|
|
|
|
Excellent, thank you for your help!
One thousand internet dollars are coming your way, just put your ethernet cable into the trash can can to catch it all.
|
|
|
|
|
|
If I understand you correctly, you just need a simple inner join.
Select ...
From YourPrimaryTable
InnerJoin YourDetailTable
on YourPrimaryTable.Column1 = YourDetailTable.Column1
and YourPrimaryTable.Column2 = YourDetailTable.Column2
...
Hope that helps.
Syed Mehroz Alam
|
|
|
|
|
Thanks for your reply.
Can we do the same thing without taking join. I mean can we use IN clause for multiple columns?
CodeManiac
xxxxxxxxxx
xxxxxxxxxx
|
|
|
|
|
Confusing...I wonder what do you need. Can you explain using a simple example.
|
|
|
|
|
Sorry to confuse you.
Let me explain you complete scenario.
I am having two databases DB1 and DB2. DB1 has single table T1 and 15 columns namely C1, C2, C3 etc. DB2 has two table T1 and T2. T1 table is identical in both the databases. So T1 table has same 15 columns and same data in both the databases. T2 has 5 columns C1, C2, C3, C4,C5 which together constitute primary key. In T1 table of DB1 database, some of the records are modified. T2 table of database DB2 has the primary keys of all the modified records. I need to update table T1 of database DB2 for the modified records.
I need a way to accomplish this. Hopefully I am clear now.
CodeManiac
xxxxxxxxxx
xxxxxxxxxx
|
|
|
|
|
I got it now. This seems a difficult issue. I suggest you to create some trigger on db1.T1 that updates the modified rows in db2.
If you still want to use some batch update, the most inappropriate way will be to use a cursor loop. But wait, lets hope someone else in the forum finds a more efficient way.
Good luck.
Syed Mehroz Alam
|
|
|
|
|
You have to create any trigger or you can make changes on T1 of DB2 something like query down below which you execute that both querys at same time:
Update DB1.dbo.T1 set DB1.dbo.T1.column='value' where DB1.dbo.T1.colname ='conditionvaue'<br />
Update DB2.dbo.T1 set DB2.dbo.T1.column='value' where DB2.dbo.T1.colname ='conditionvaue'
I Love T-SQL
"Don't torture yourself,let the life to do it for you."
|
|
|
|
|
Perhaps an inner join in the update?
UPDATE T1
SET ...
FROM T1
INNER JOIN T2
ON T1.blah=T2.blah
AND ...
|
|
|
|
|
Just one more thing that this process will happen in Batch.
CodeManiac
xxxxxxxxxx
xxxxxxxxxx
|
|
|
|
|
|
I mean the proces will happen every night for the data that changed during day time.
CodeManiac
xxxxxxxxxx
xxxxxxxxxx
|
|
|
|
|
Shouldn't be a problem then.
I always try to have the database engine do most of the work.
|
|
|
|
|
select FirstTable.*,SecondTable.*<br />
from FirstTable,SecondTable<br />
where SecondTable.FirstTableColumn in (FirstTable.FirstColumn)
I Love T-SQL
"Don't torture yourself,let the life to do it for you."
|
|
|
|
|
Hello,
I had posted the question before .Sorry to post it again since I thought my question went to the 2nd page.
I want to write a pivot table query and transfer the results in a table
The following query works but the result doesn't get transferred in a table
Select Cap orderby JobWorker pivot TimePeriod into CrossTabCap
Regards
Pritha
|
|
|
|
|
Well that is no reason to post again. In the first place, you double posted. Then you didn't include any code, so what do you expect?
I have just done what you could have done, Goggled for SQL Server 2005 Pivot and got loads of results with example code.
Bob
Ashfield Consultants Ltd
|
|
|
|
|
Thank you for all your replies.
|
|
|
|
|
Hello,
Before posing question even I have googled on pivot query,pivot sql query but none of the sites explained the synttax abut making a new table from a pivot query .And that's the reason I asked the question .I know the pivot query but how make a table of the results from the query.
Using INTO for the pivot query didn't work.
The following query works but I want to make a table
TRANSFORM sum(cCapacity) AS SumOfCapacity
SELECT jobworker, sum(cCapacity) AS Total
FROM cCapacity
GROUP BY JObWorker
PIVOT contract into y;
Thanks and sorry.
Pritha
|
|
|
|
|
Have you tried sub-querying the pivot?
Select *
Into Table
From
(
TRANSFORM sum(cCapacity) AS SumOfCapacity
SELECT jobworker, sum(cCapacity) AS Total
FROM cCapacity
GROUP BY JObWorker
PIVOT contract into y
) t
|
|
|
|