Помогите написать цикл и запрос

Тема в разделе "PHP", создана пользователем LLlaMaH, 24 дек 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. LLlaMaH

    LLlaMaH Вот он я

    Регистр.:
    1 апр 2009
    Сообщения:
    250
    Симпатии:
    358
    Что-то не могу сообразить. По идее, просто, но вот... никак :)

    Есть две таблицы.
    Поле sid в одной таблицы (table1) = поле id в другой таблице (table2). В таблице table2 есть поле field, значения которого могут быть 0 и 1.
    Как посчитать количество строк в таблице table1 только тех sid, соответствующие id из table2 которых у строк с field=1

    Надеюсь, понятно написал :)
     
  2. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    Код:
    SELECT COUNT(*) FROM table1 WHERE
    	sid IN (SELECT id FROM table2 WHERE field=1)
    
     
    LLlaMaH нравится это.
  3. LLlaMaH

    LLlaMaH Вот он я

    Регистр.:
    1 апр 2009
    Сообщения:
    250
    Симпатии:
    358
    Я правильно понимаю, что
    $kolichestvo = mysql_query ("SELECT COUNT(*) FROM table1 WHERE
    sid IN (SELECT id FROM table2 WHERE field=1)");
    поместит в переменную $kolichestvo число строк?

    Или надо какую-то другую функцию использовать, вместо mysql_query?

    PS Просто у меня не отработал этот запрос.
     
  4. Alexitdv

    Alexitdv

    Регистр.:
    4 янв 2008
    Сообщения:
    161
    Симпатии:
    65
    Не правильно.

    $kolichestvo = mysql_query ("SELECT COUNT(*) FROM table1 WHERE
    sid IN (SELECT id FROM table2 WHERE field=1)");

    Выполняет запрос и возращается дескриптор.

    Далее нужно: $col = mysql_fetch_assoc($kolichestvo) или же mysql_fetch_row или же mysql_fetch_array.

    А сам запрос должен вернуть один элемент с числом, которое означает количество.
     
    LLlaMaH нравится это.
  5. LLlaMaH

    LLlaMaH Вот он я

    Регистр.:
    1 апр 2009
    Сообщения:
    250
    Симпатии:
    358
    Warning: mysql_fetch_assoc(:( supplied argument is not a valid MySQL result resource.

    Такая вот штука выходит. Может все-таки в запросе какая ошибка?
     
  6. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    да вроде все верно
    PHP:
    <?php
        
    /* Соединяемся, выбираем базу данных */
        
    $link mysql_connect("mysql_host""mysql_user""mysql_password")
            or die(
    "Could not connect : " mysql_error());
        print 
    "Connected successfully";
        
    mysql_select_db("my_database") or die("Could not select database");

        
    /* Выполняем SQL-запрос */
        
    $query "SELECT COUNT(*) FROM table1 WHERE
        sid IN (SELECT id FROM table2 WHERE field=1)"
    ;
        
    $result mysql_query($query) or die("Query failed : " mysql_error());
    $line mysql_fetch_array($resultMYSQL_ASSOC);
    //Выврд в HTML
    echo $line[0];

        
    /* Освобождаем память от результата */
        
    mysql_free_result($result);

        
    /* Закрываем соединение */
        
    mysql_close($link);
    ?> 
    вы так делаете?
     
  7. GrizliK

    GrizliK Создатель

    Регистр.:
    4 сен 2009
    Сообщения:
    47
    Симпатии:
    3
    SELECT COUNT(*) FROM table1, table2 WHERE
    (table1.sid=table2.id) AND (table2.field='1':()
     
Статус темы:
Закрыта.