Kniffliges SQL-Problem

Hallo zusammen

Als Vorabinformation, ich arbeite mit MS-SQL 7.x.

Ich habe eine Tabelle, die vereinfacht gesagt etwa so aussieht:

**ID Status Row Seat**  
123 0 9 12
124 0 9 13
125 0 9 14
...
150 0 10 15
151 0 10 17
152 0 10 18
...

Ich habe mir nun eine SP geschrieben, die bei einer bestimmten Anzahl Zeilen dieser Tabelle den Status von 0 auf 1 setzt. Wie kann ich dem Update-Statement, welches ich übrigens mit ROWCOUNT auf die gewünschte Anzahl begrenze, sagen, dass ich nur Zeilen will, die in der selben ROW sind und bei denen der Abstand zwischen den SEATS nicht grösser als 1 ist?

Danke für Eure Hilfe
Martin

Hi,
MS-SQL kenne ich nicht so gut, aber das müßte auch hier gehen:

select id, row, seat 
 from kinositze ks
 where exists(select id 
 from kinositze ks1 
 where ks1.row = ks.row
 and ks1.seat - ks.seat = 1);

Auf die Ergebnismenge solltest Du die Einschränkung der Anzahl anwenden.

Gruß

J.

Hi,
MS-SQL kenne ich nicht so gut, aber das müßte auch hier gehen:

bei mir genauso …

select id, row, seat
from kinositze ks
where exists(select id
from kinositze ks1
where ks1.row = ks.row
and ks1.seat - ks.seat = 1);

Auf die Ergebnismenge solltest Du die Einschränkung der Anzahl
anwenden.

könnte aber auch mit

select k1.id,k1.row,k1.seat
from kinositze k1, kinositze k2
where (k1.seat - k2.seat) = 1;
and k1.row = k2.row;

das würde - zumindest in oracle - einen full-table-scan umgehen (ich hoffe doch, daß ein paar indizes vorhanden sind) und sich - bei größeren tabellen - erheblich auf die performance auswirken …

Gruß

J.

ebenfalls grüße
Tomh