За последние 24 часа нас посетил 16121 программист и 1666 роботов. Сейчас ищут 919 программистов ...

Выборка из двух таблиц

Тема в разделе "PHP и базы данных", создана пользователем vasiliska, 17 ноя 2015.

  1. vasiliska

    vasiliska Новичок

    С нами с:
    29 окт 2015
    Сообщения:
    6
    Симпатии:
    0
    1)Есть таблица, которая содержит неповторяющиеся поле 'username' (список логинов)
    2)Есть ещё одна табличка где куча полей, но есть одно (username), в котором значения попадают из первой таблицы, но их там куча и могут повторятся. (табличка с активностью пользователей)

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

    Добавлено спустя 8 минут 10 секунд:
    Ну в начале понятно:

    Код (PHP):
    1. $connect = mysql_connect("192.168.1.1", "root", "111111") or die(mysql_error());
    2. mysql_select_db('xxxxx');// Выбираем базу
    3. mysql_errno($connect);
    4. mysql_error($connect);
    5.  
    6. $q = "SELECT * FROM usergroup";
    7. $r = mysql_query($q);
    8.  
    9. if (mysql_num_rows($r) > 0) {
    10.     while ($l = mysql_fetch_array($r)) {
    11.         $user = $l['username'];
    12.         $arr[] = $user;
    13.     }
    14. }
    15.  
    сейчас в массиве $arr список всех юзеров, а вот как проверить существуют ли такие юзеры которые ниразу не попали в таблицу номер 2?
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    mysql под запрос или join
     
  3. vasiliska

    vasiliska Новичок

    С нами с:
    29 окт 2015
    Сообщения:
    6
    Симпатии:
    0
    Вот такая жуткая конструкция вроде работает, но может можно проще сделать?

    Код (PHP):
    1. echo "Удаляем неиспользвемые логины/пароли";
    2.  
    3. $connect = mysql_connect("192.168.1.1", "root", "111111") or die(mysql_error());
    4. mysql_select_db('xxxxxx');// Выбираем базу
    5. mysql_errno($connect);
    6. mysql_error($connect);
    7.  
    8. $sql = "SELECT * FROM usergroup";
    9. $r = mysql_query($sql);
    10.  
    11. if (mysql_num_rows($r) > 0) {
    12.     while ($l = mysql_fetch_array($r)) {
    13.         $user = $l['username'];
    14.         $arr[] = $user;
    15.     }
    16. }
    17.  
    18. $sql ="SELECT username From acct";
    19. $r = mysql_query($sql);
    20. if (mysql_num_rows($r) > 0) {
    21.     while ($l = mysql_fetch_array($r)) {
    22.         $user = $l['username'];
    23.         $arr_act[] = $user;
    24.     }
    25. }
    26.  
    27. foreach ($arr as $value)
    28. {
    29.    if (!in_array ($value,$arr_act )) {
    30.        echo "!Удаляем эту лишнюю запись:" . $value . "<br />";
    31.        $sql = 'DELETE FROM usergroup WHERE username="' . $value . '"';
    32.        $r = mysql_query($sql);
    33.    } ;
    34. }