2011-12-03 16 views
14

Mam bazę danych SQLITE z dwiema tabelami. Tabela A ma całkowity znacznik czasu i inną kolumnę całkowitą zawierającą identyfikator wiersza odnoszący się do wiersza w tabeli B, który ma dwa znaczniki czasu.SQLITE - usuwanie wierszy z łączeniem wewnętrznym?

chcę usunąć wszystkie wiersze w tabeli A gdzie jest znacznik czasu nie leży pomiędzy tymi dwoma znacznikami w tabeli B i ROWID jest równa X.

Oto co mam w tej chwili, ale jestem błąd składniowy:

DELETE FROM network 
WHERE ROWID in (
    SELECT ROWID 
    FROM track 
    INNER JOIN network ON (track.ROWID = network.trackId) 
    WHERE network.timestamp > track.stopTime OR network.timestamp < track.startTime 
     AND network.trackId = X 

Odpowiedz

16

Nie masz zamkniętego nawiasu dla swojej podselekcji. Wypróbuj to:

DELETE FROM network 
WHERE ROWID in (
    SELECT ROWID 
    FROM track 
    INNER JOIN network ON (track.ROWID = network.trackId) 
    WHERE network.timestamp > track.stopTime OR network.timestamp < track.startTime 
     AND network.trackId = X 
) 

Jeśli to nie działa, spróbuj opublikować rzeczywisty błąd składni.

+0

Cześć, dzięki za wpis. Miałeś rację, że posortował pierwszy błąd składni. Również WHERE ROWID powinno być WHERE trackId, a SELECT ROWID powinno być SELECT track.ROWID. Wydaje się, że skrypt działa. Dzięki za pomoc! :) –

+0

DELETE FROM tblRecipe GDZIE IDkategorii w ( SELECT IDkategorii OD tblSubCategories INNER JOIN tblRecipe ON (tblSubCategories.categoryID = tblRecipe.categoryID) GDZIE tblRecipe.categoryID = 9; – Raju

+0

błąd ::: :(blisko ";" : błąd składni) – Raju

Powiązane problemy