2015-02-01 2 views
0

I가 다음 sqlite3를 테이블 :선택 참조 열 항목 : 무시 WHERE 절

CREATE TABLE bilder (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL); 

데이터 :

__id__ 
8 
9 
10 
11 

그리고

CREATE TABLE combos (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL); 

데이터 :

__id__ 
1 
2 
3 
4 
01 23,516,

그리고

CREATE TABLE combo_bild (combo_id int not null references combos(id), bild_id int not null references bilder(id), display_nummer int, unique (combo_id, bild_id)); 

데이터 :

__combo_id__|__bild_id__|__display_nummer__ 
1   8   1 
1   9   2 
2   8   1 
2   10   2 

나는 다음과 같은 쿼리를 처리 할 때 :

SELECT combo_id, bild_id FROM combo_bild WHERE combo_id > 1; 

은 내가 (예상대로) 얻을 그러나

__combo_id__|__bild_id__|__display_nummer__ 
2   8   1 
2   10   2 

을 때 나는 우리이다. 전자 다음 쿼리 :

SELECT combo_id, bild_id FROM combo_bild WHERE bild_id > 9; 

내가

__combo_id__|__bild_id__|__display_nummer__ 

1   8   1 
1   9   2 
2   8   1 
2   10   2 

가 왜 절은 무시됩니다 얻을? 그것을 봐 줘서 고마워, Dani

답변

0

WHERE 절은 무시되지 않습니다. bild_id 열의 모든 값은 숫자가 아닌 문자열이기 때문에 9보다 큽니다.

데이터 가져 오기 방법을 확인하십시오.

는 테이블을 수정 같은 것을 실행하려면 :

UPDATE combo_bild SET bild_id = CAST(bild_id AS INT); 
+0

왜 bild_id 문자열의 항목입니다을? 나는 그들을 int로 선언했다 (create statement 참조). –

+0

사실 : "$ check-> bindParam (': ID', $ id, SQLITE3_TEXT);" - 대신 SQLite3_INTEGER - 왜 ID가 int로 선언 되었기 때문에 DBMS가 불평하지 않습니까? 그리고 : tipp에 대해 많은 감사드립니다! –

+0

"$ conn-> exec ('PRAGMA foreign_keys = ON;');"와 같은 것이 필요합니까? 내 입장을 제대로 확인 하시겠습니까? –