Gaaarfild

Рейтинг
51
Регистрация
24.10.2009
Интересы
5bc341

Добрый день.

1. Сайт

2. Раздел

Большое спасибо. Решения вполне подходят. Вы супер!

VHS:
говнокод, но вроде работает

$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);

Работает только при строгом порядке соответствия второго массива в первом. Если в первом или во втором массиве поменять местами какие нибудь элементы, код перестанет работать.

siv1987:

function check($m, $h) {
$intersections = array_unique(array_intersect($h, $m));
return count($intersections);
}

Этот код будет всегда возвращать количество элементов в массиве $m.

C руби я к сожалению совершенно не знаком. По-этому не понял вот эту строчку совсем:

intersections = a.each_slice(b.size).to_a.select { |arr| arr == b }
ivan-lev:
А имена таблиц тоже таблица1 и таблица2?



Суть от этого не изменилась.. просто в условие проверку на `action`='funded' добавить нужно.

Да. :) На самом деле я это понял уже из первого ответа. :) Спасибо вам большое!

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.

ivan-lev:
ON (a.id=b.iid AND b.group_id='".intval($id)."')

Вот теперь вытаскивает. Спасибо огромное :)

siv1987:
Вы не правильно понимаете, вы должны сравнивать не результат JOIN'a а значение поле. http://ru.wikipedia.org/wiki/Join_(SQL)#LEFT_OUTER_JOIN

Да это все равно ничего не меняет. Даже если я пишу

ON (a.id=b.iid) WHERE b.group_id='".intval($id)."' OR b.group_id=0

Все равно не вытаскиваются.

siv1987:
Точно? А ничего в нем не смущает?

`group_id` int(100) NOT NULL DEFAULT '0',

WHERE group_id={$id} OR grup_id=0

Так по сути он NOT NULL если его не заполнили.

А еслион вытаскивается по LEFT JOIN, то его результат разве не NULL? Это не запись из таблицы. Это результат склейки же.

Всего: 61