php
  • mysql
  • ajax
  • conditional
  • 2016-01-19 4 views -3 likes 
    -3

    У меня есть таблица с столбцами homeTeamId и visitorTeamId.MySQL с использованием AND OR условных обозначений

    Я хочу, чтобы отобразить строки, где homeTeamId = 39 или 43 и visitorTeamId = 39 или 43

    $sql ="SELECT * FROM game WHERE (homeTeamId='$_GET[homeTeamId]' or '$_GET[visitorTeamId]' and visitorTeamId='$_GET[homeTeamId]' or '$_GET[visitorTeamId]')"; 
    

    дает мне

    homeTeamName visitorTeamName visitorTeamId homeTeamId visitorTeamScore homeTeamScore date 
    
    barrard teamName0 39 43 0 0 2016 01/17 09:41 pm 
    teamName0 barrard 43 39 0 0 2016 01/17 10:18 pm 
    teamName0 barrard 43 39 0 0 2016 01/17 10:26 pm 
    

    однако, если я использовать что-то вроде 39 и 20 я получаю точные результаты.

    я попробовал этот способ

    $sql ="SELECT * FROM game WHERE homeTeamId=('$_GET[homeTeamId]' or '$_GET[visitorTeamId]') and visitorTeamId=('$_GET[homeTeamId]' or '$_GET[visitorTeamId]')"; 
    

    и я не получаю никакого результата,

    Спасибо за вашу помощь.

    +0

    Используйте круглые скобки. – Uueerdo

    +0

    'WHERE homeTeamId IN (39,43) OR visitorTeamId IN (39, 43)' –

    ответ

    0

    Попробуйте это:

    $sql ="SELECT * FROM game WHERE 
    (homeTeamId='$_GET[homeTeamId]' OR homeTeamId='$_GET[visitorTeamId]') 
    AND 
    (visitorTeamId='$_GET[homeTeamId]' OR visitorTeamId='$_GET[visitorTeamId]')"; 
    
    +0

    Работает! спасибо Роланду! – Barrard

    0

    Вы должны попробовать что-то вроде этого:

    $sql ="SELECT * FROM game WHERE (homeTeamId='$_GET[homeTeamId]' OR homeTeamId='$_GET[visitorTeamId]') AND (visitorTeamId='$_GET[homeTeamId]' OR visitorTeamId'$_GET[visitorTeamId]')"; 
    

    Или использовать более короткий ПОДХОД IN, оставленных как комментарий под ваш пост! Используя IN, вы можете реализовать еще более сложные запросы.

    Использование в:

    $sql = "SELECT * FROM game WHERE homeTeamId IN ('$_GET[homeTeamId]', 
         '$_GET[visitorTeamId]') AND visitorTeamId IN ('$_GET[homeTeamId]', 
         '$_GET[visitorTeamId]')"; 
    
    0

    операторы MySQL имеют порядок старшинства. Это означает, что некоторые операторы оцениваются перед другими.

    Мы можем использовать скобки, чтобы указать порядок, который мы хотим оценить операторам, чтобы переопределить порядок по умолчанию.

    Рассмотрим:

    SELECT '0 AND 1 OR 1' AS cond, 0 AND 1 OR 1 
    UNION ALL 
    SELECT '(0 AND 1) OR 1' AS cond, (0 AND 1) OR 1 
    UNION ALL 
    SELECT '0 AND (1 OR 1)' AS cond, 0 AND (1 OR 1) 
    

    возвращается:

    cond   0 AND 1 OR 1 
    -------------- ------------ 
    0 AND 1 OR 1    1 
    (0 AND 1) OR 1    1 
    0 AND (1 OR 1)    0 
    
    Смежные вопросы