Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL брои сложни резултати от заявка?

Проблемът ви е, че заявката ви не връща това, което смятате, че връща (винаги помага да стартирате заявката си самостоятелно, за да видите дали наборът от резултати е това, което очаквате).

Добре, нека разбием това.

Опитвате се да преброите всички публикации, които не има съвпадащ запис в таблицата на таксита за този потребителски идентификатор. Това, което искате тук, е да JOIN таблиците и вземете тези редове в post което обикновено би било изключено от присъединяването. Това се постига чрез ляво външно присъединяване

(редактирано )

SELECT p.ID, t.taxiID
FROM post p LEFT OUTER JOIN taxi t ON p.ID = t.taxiID AND t.userID = '.$user.'
HAVING t.taxiID IS NULL

Това HAVING клаузата казва:само онези редове в набора от резултати, които нямат съответен t.taxiID.

Ако изпълните тази заявка и получите очаквания набор от редове (публикации, които нямат харесвания или нехаресвания от този потребител), ТОГАВА можете да добавите външна заявка, за да преброите броя на върнатите редове:

SELECT COUNT(*) as count FROM (
    SELECT p.ID, t.taxiID
    FROM post p LEFT OUTER JOIN taxi t ON p.ID = t.taxiID AND t.userID = '.$user.'
    HAVING t.taxiID IS NULL
) a

Това трябва да върне един скалар с име count. В този случай ще можете да кажете:

if ($count[0]->count > 10) { blah blah blah }

(2-ра редакция ) Тази вътрешна заявка ще ви предостави онези публикации, които имат или стойност =1 в таблицата за таксита, или изобщо нямат стойност, което води до връщане 4 за вашия пример:

SELECT p.ID, t.taxiID, t.value
FROM post p LEFT OUTER JOIN taxi t ON p.ID = t.taxiID AND t.userID = '.$user.'
HAVING t.taxiID IS NULL OR t.value = 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. съединени редове на таблица в колони със заглавия на колони от оригиналните редове

  2. Как да съхранявам показатели за моето уеб приложение?

  3. Как да създам SQL заявка, която се групира в определен процентен диапазон

  4. MySQL грешни резултати с GROUP BY и ORDER BY

  5. Как да изберете последните N записи от таблица в mysql