Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: выборка из массивов с последующей записью в массив
в этих массивах есть похожие данные, именно данные но не ключи (данные 60,61,62....),надо сравнить 2 массива и одинаковые значения записать в 3ий массив.
пробовал так:
$result1=mysql_query("select basic_account from users where id=any(select user_id from users_groups_link where group_id=100)",$conn)
while($row1[]=mysql_fetch_assoc($result1));
$result2=mysql_query("select id from accounts where balance<'0'", $conn);
while($row2[]=mysql_fetch_assoc($result2));
$results=array();
foreach($row1 as $value1)
{
foreach($row2 as $value2)
{
if($value1 == value2)
{
$results[$p]['id']=$value2;
$p++;
}
#else break;
}
}
но получается цикл бесконечный, тыкните носом где ошибка, я думал смысл в том чтобы оба массива определить как $value1-2 и сравнивать их, и если есть похожие данные то ложить их в массив.
Вообще если это можно сделать на уровне Mysql запроса, то буду очень благодарен.
Мелкий
Отправлено: 14 Августа, 2014 - 15:23:13
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Быстрее и проще будет на стороне СУБД пересечение построить. Для этого напишите, что есть и что надо получить без каких-то непонятных массивов.
----- PostgreSQL DBA
k0ma
Отправлено: 14 Августа, 2014 - 15:53:44
Гость
Покинул форум
Сообщений всего: 82
Дата рег-ции: Март 2013
Помог: 1 раз(а)
нуу...
есть 3 таблицы из которых надо сделать выборку зависимую от других таблиц.
select id=(select basic_account from `users` where id= (select user_id from `users_groups_link` where group_id='100')) from accounts where balance<'-600'";
и это последняя выборка из таблицы по прошлому ид и еще по тем у кого баланс менее -600 (минус 600).
из прошлого поста видно что я совместил 2 запроса в один, и получаю те цифры которые надо, но вот совместить 3 запроса + выборку из них по балансу неполучается, мускул ругается.
А может всетаки сделать все раздельно? нельзя никак задать один запрос в мускул, и потом его используя сделать другой запрос, но не одной строкой а в 2,3-9 строк, но я так не запутаюсь.
Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013
Помог: 5 раз(а)
Мелкий
Отправлено: 14 Августа, 2014 - 16:11:00
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
k0ma пишет:
это выборка и таблицы по group_id=100
Спасибо, кэп. Как бы говоря, SQL я читать умею.
Я вижу, что что-то вы сделать пытаетесь. Меня не интересует, как вы это хотите сделать. Покажите, что у вас есть в БД, как оно между собой связано и что надо из этого получить.
----- PostgreSQL DBA
k0ma
Отправлено: 14 Августа, 2014 - 17:42:11
Гость
Покинул форум
Сообщений всего: 82
Дата рег-ции: Март 2013
Помог: 1 раз(а)
Мелкий пишет:
k0ma пишет:
это выборка и таблицы по group_id=100
Спасибо, кэп. Как бы говоря, SQL я читать умею.
Я вижу, что что-то вы сделать пытаетесь. Меня не интересует, как вы это хотите сделать. Покажите, что у вас есть в БД, как оно между собой связано и что надо из этого получить.
вот 3 таблицы, и их разделы. Из поста ранее видно что мы хотим сделать и как они связаны между собой. Или еще не все? что еще показать?
Хотим сделать выборку из одной таблицы, использовать в другой, потом использовать в другой, тоесть когда у людей минус 600р, то выбирались бы ИД тех пользователей и далее редактировался их статус на "заблокированный" и тд и тп
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Да отвяжитесь вы от этих ваших запросов.
Задача: выбрать те accounts.id, у которых accounts.balance < -600 и у которых у связанного через таблицу пользователей user_id указано group_id=100. Таблицы между собой связаны так и так.
Так?
JOIN`users_groups_link`ON users.id=user_id AND group_id=100
WHERE accounts.balance <-600
Не подзапросы, чтобы дать оптимизатору простор для выбора порядка объединений и индексов.
----- PostgreSQL DBA
k0ma
Отправлено: 15 Августа, 2014 - 11:03:43
Гость
Покинул форум
Сообщений всего: 82
Дата рег-ции: Март 2013
Помог: 1 раз(а)
to Мелкий спасибо огромное да, то что нам надо =)
я уже замучился с выборкой из массивов по средствам РНР.
Скажите где почитать про такие длинные запросы для mysql и как они пишутся?
Мелкий
Отправлено: 15 Августа, 2014 - 11:32:30
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Длинные? Где длинные запросы? Это простой и короткий...
Покинул форум
Сообщений всего: 82
Дата рег-ции: Март 2013
Помог: 1 раз(а)
Возникла еще необходимость внети в ваш скрипт параметр, чтобы выборка так и была по балансу но + еще чтобы у человека, по ранее выбраному ID, в таблице accounts, столб is_blocked в нем у этих людей менялся код (определенный код - определенный вид блокировки), тоесть еще будет 5 видов кодов(блокировок). Это реально?
код - число, например 16, или 768.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.