views:

396

answers:

4

I have a secondhand sale car database and four tables with relationships. Same column names have relationships.

Tables are:
Record: RecID Markname Model...
Features: FeatureID Featurename
Marks: MarkID Markname
Carfeature: CarfeatureID RecID FeatureID

Now, i want to delete a mark from Marks in c#. When i delete a mark, SQL must delete all records who has this mark.

I used a query like that:

DELETE from Carfeature 
 where RecID = (select RecID 
 from Record 
 where Mark = (select markname 
                 from Marks 
                where MarkID=@MarkID))";

string sorgudelmarkfromrecord = "DELETE from Record where Mark=(select Markname from Marks where MarkID=@MarkID)";

string sorgudelmark = "DELETE from Marks where MarkID=@MarkID";

When i run this, i get an error message like this:

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. The statement has been terminated.

So, how can i delete multiple data from a table?

+2  A: 

instead of using where RecID=(...) use where RecID in (...)

Moose
+1  A: 

ON DELETE CASCADE on the foreign key?

Kris
+8  A: 

If I understand you right, you can use this query to remove all CarFeatures for a cerain MarkID:

DELETE FROM CarFeature 
WHERE RecID IN (
    select RecID 
    from Record 
    where Markname IN (
        select Markname 
        from Marks 
        where MarkID = @MarkID
    )
)

The removal of records and marks is a simpler version of this query, I'll leave the exact SQL up to you.

Andomar
+1 for spending more time to format your answer clearly than i did. :)
Moose
Thanks both of you friends. I tried and it worked. I know it is very simple but i am a newbie programmer. i should work harder on SQL queries :) Thanks again
Mehmet Kaleli
A: 

use this

DELETE from Record r where r.Mark in (select m.Mark from Marks where r.MarkID=m.MarkID);

Note: markid must be primary key in both tables..

Imran Mujtaba