Работает только при строгом порядке соответствия второго массива в первом. Если в первом или во втором массиве поменять местами какие нибудь элементы, код перестанет работать.
ivan-lev: LEFT Join-ом по ID-шнику
WHERE ... IS NULL
или
SELECT * from bid WHERE id
NOT IN (select DISTINCT id_bid from bid_payment)
Оптимизировать по обстановке (за период, или выбирать только с PK > $id_start)
итд
p.s. если в вопросе приводить структуру таблиц, есть шанс получить более конкретный ответ.
Немного неверно описал похоже вторую таблицу.
Один ко многим.
1 таблица
|bid_id|title|status|
----------------------
|1|первый|complete|
|2|второй|in_progress|
2 таблица
|act_id|bid_id|action|
------------------------
|43|1|opened|
|44|2|funded|
|45|1|closed|
Как видно из таблиц, для бида 1, не было статуса funded в таблице 2. Значит бид №1 должен быть в вытащенных данных, а второй - нет, так как для него есть в таблице действие funded.
Добрый день.
1. Сайт
2. Раздел
Большое спасибо. Решения вполне подходят. Вы супер!
говнокод, но вроде работает
$h = array('a', 'b', 'f', 'r', 'b', 'v', 'r', 'b', 't', 'a');
$m = array('a', 'b', 'f', 'r', 'v');
function check($array, $search, $count=0)
{
foreach ($array as $k=>$v)
{
$n = array_search($v, $search, true);
if ($n!==false)
{
unset($search[$n]);
} else {
print $count;
return;
}
}
$count++;
check($array, $search, $count);
}
check($m, $h);
Работает только при строгом порядке соответствия второго массива в первом. Если в первом или во втором массиве поменять местами какие нибудь элементы, код перестанет работать.
Этот код будет всегда возвращать количество элементов в массиве $m.
C руби я к сожалению совершенно не знаком. По-этому не понял вот эту строчку совсем:
intersections = a.each_slice(b.size).to_a.select { |arr| arr == b }А имена таблиц тоже таблица1 и таблица2?
Суть от этого не изменилась.. просто в условие проверку на `action`='funded' добавить нужно.
Да. :) На самом деле я это понял уже из первого ответа. :) Спасибо вам большое!
LEFT Join-ом по ID-шнику
WHERE ... IS NULL
или
SELECT * from bid WHERE id
NOT IN (select DISTINCT id_bid from bid_payment)
Оптимизировать по обстановке (за период, или выбирать только с PK > $id_start)
итд
p.s. если в вопросе приводить структуру таблиц, есть шанс получить более конкретный ответ.
Немного неверно описал похоже вторую таблицу.
Один ко многим.
1 таблица
|bid_id|title|status|
----------------------
|1|первый|complete|
|2|второй|in_progress|
2 таблица
|act_id|bid_id|action|
------------------------
|43|1|opened|
|44|2|funded|
|45|1|closed|
Как видно из таблиц, для бида 1, не было статуса funded в таблице 2. Значит бид №1 должен быть в вытащенных данных, а второй - нет, так как для него есть в таблице действие funded.
ON (a.id=b.iid AND b.group_id='".intval($id)."')
Вот теперь вытаскивает. Спасибо огромное :)
Вы не правильно понимаете, вы должны сравнивать не результат JOIN'a а значение поле. http://ru.wikipedia.org/wiki/Join_(SQL)#LEFT_OUTER_JOIN
Да это все равно ничего не меняет. Даже если я пишу
Все равно не вытаскиваются.
Точно? А ничего в нем не смущает?
`group_id` int(100) NOT NULL DEFAULT '0',
WHERE group_id={$id} OR grup_id=0
Так по сути он NOT NULL если его не заполнили.
А еслион вытаскивается по LEFT JOIN, то его результат разве не NULL? Это не запись из таблицы. Это результат склейки же.