Ho tre tabelle A, B e AB che fa da relazione molti a molti tra A e B e quindi contiene solo due campi int IdA e IdB che puntano rispettivamente ad A e a B.
Usando phpMyAdmin succede che:
Se faccio una query del tipo:
SELECT * FROM AB WHERE AB.IdA = 2165 AND AB.IdB = 14
mi trova un record.
Se invece faccio:
SELECT * FROM AB WHERE IdA = 2165
mi trova 3 record giusti e uno che non contiene il 2165 ma il 2163.
Ma non compare quello con AB.IdB = 14
Se apro la tabella AB e la ordino in base a IdA
trovo i 3 record della query precedente ovvero corrispondenti a IdA = 2165.
Invece con:
SELECT * FROM AB WHERE AB.IdB = 14
mi trova 23 record giusti e uno che non contiene il IdB=14 ma IdB=3466
che guarda a caso corrisponde al record con AB.IdA = 2163 e AB.IdB = 3466
Se apro la tabella AB e la ordino in base a IdB
mi elenca i 23 record della query precedente ovvero con AB.IdB = 14.
Ho pensato che potesse dipendere da una corruzione della tabella, e ho provato a fare una Check della AB ed infatti mi dice che c'è un record in più ripetto al numero corretto, ma se cerco di fare una REPAIR mi dice che quella tabella non supporta l'operazione di REPAIR.
Come mai?