Я новичок в SQL и работаю над приложением PHP + MySql. База данных, используемая приложением, содержит множество таблиц, таких как swverforftver :
SWVerID FileTypeVerID
1111 897897
1111 32352342
2222 897897
2222 32352342
2222 222222222
3333 222222222
и таблица filetypeversion :
FileTypeVerID PubID FileTypeID IsRelatedTo IsPreviousVersionOf
897897 789789798 6575 dw qweq
32352342 68767 231232 dasdasda asdasda
222222222 333333 231231 asd wdadw
и таблица softwareversion :
SWVerID SWID Name
1111 1234 Adobe Reader
2222 5678 Word
3333 4444 ExcelVersion
Я использую команду SQL для извлечения значений SWVerID из таблицы версии программного обеспечения, связанной со значением FileTypeVerID 897897 И КОТОРОЕ НЕ связано со значением 222222222 из таблицы swverforftver.
Я использую следующую команду:
SELECT distinct softwareversion.SWVerID
FROM softwareversion,
filetypeversion,
swverforftver AS stv JOIN
swverforftver AS stv2 ON stv2.SWVerID = stv.SWVerID
WHERE stv2.FileTypeVerID=filetypeversion.FileTypeVerID
AND stv.SWVerID=softwareversion.SWVerID
AND (stv2.FileTypeVerID = 897897)
AND NOT (stv.FileTypeVerID = 222222222)
Вместо того, чтобы возвращать мне только значение 1111, будучи единственным значением, связанным с 897897, а не с 222222222, он возвращает мне таблицы с двумя значениями:
SWVerID
1111
2222
Кто-нибудь знает что-нибудь об этой проблеме? Кроме того, команда SQL не должна изменяться по структуре по сравнению с текущей (она должна иметь в основном JOIN и AS) ...