Как считать строки из одной таблицы, используя несколько таблиц в предложении FROM и некоторые условия поиска в предложении WHERE? - PullRequest
0 голосов
/ 17 декабря 2010

У меня есть QUERY, который похож на

SELECT COUNT(*) as cnt 
    FROM tbl_docatrtypegroupdoctype, 
         tbl_doctype, 
         tbl_docatrtypegroup 
    WHERE 1=1  
          AND 
         (tbl_doctype.doctype_name like '%Payment%' 
            OR tbl_doctype.doctype_name like'% Payment' 
            OR tbl_doctype.doctype_name like ' Payment%' ) 
    LIMIT 1

Теперь в приведенном выше запросе мне нужно подсчитать количество записей в таблице "tbl_docatrtypegroupdoctype" в соответствии с условиями, указанными в предложении where, всякий раз, когда я выполняю запрос, Я получаю счет 77, но фактический счет в БД равен 12.

В чем может быть проблема с этим запросом и как я могу его исправить?

Помощь Ant будет оценена

Спасибо

Ответы [ 2 ]

3 голосов
/ 17 декабря 2010

Вам необходимо указать свои условия присоединения. Что произойдет, если вы этого не сделаете - это перекрестный продукт, а не то, что вы хотите.

 SELECT COUNT(*) as cnt 
FROM tbl_docatrtypegroupdoctype JOIN  
     tbl_doctype on (THE CONDITION) JOIN 
     tbl_docatrtypegroup on (THE CONDITION)

В качестве альтернативы условия JOIN могут быть указаны в предложении WHERE.


В предложении where:

  WHERE table1.field1 = table2.field2 AND table2.field3 = table3.field4

Поля, к которым вы присоединяетесь, должны, конечно, быть семантически связаны.

0 голосов
/ 17 декабря 2010

Вам необходимо применить все условия соединения между тремя таблицами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...