Выборка уникальных значений, где...

QuZ

Постоялец
Регистрация
18 Июл 2009
Сообщения
86
Реакции
50
Доброе время суток. Возник вопрос один. Сам пытался решить - не вышло.
Имеется у меня база данных состоящяя из 2-х колонок.
ID|TIPE ( Грубо говоря)
Были у меня 2-ве базы с одинаковыми ID (Т.е. точная копия), но с разным значением TIPE в нем. Например.
ID=1|TIPE=1 (Первая таблица)
ID=1|TIPE=0 (Вторая таблица)
Я эти обе базы залил без обработки в обну базу.
Получил на выходе в общей базе:
ID=1|TIPE=1
ID=1|TIPE=0
И т.д.
Теперь столкнулся с проблемой.
В начале скрипта идет построчная выборка значений в массив.
Хотелось бы сделать: если у меня найдена уже строчка с записанным ID, тогда я не произвожу занесение массива а базу, а смотрю на значение $row[TIPE] и на полученное значение из [TIPE], которое было уже внесено(Представим его $row_2[TIPE].)
Если в $row[TIPE] содержится значение >, чем в $row_2[TIPE], тогда
$row_2[TIPE] = $row[TIPE]
else
$row[TIPE]= '';
(Писал без синтексиса, как наглядность примера).
Можно вставить селект по $row[ID] уже в занесенную базу, сделать вторым массивом и т.д, но это очень сильно увелит нагрузку и время выполнения скрипта.
Хотел бы узнать, есть у кого какие идеи, как это сделать малой кровью.
Старался описать как можно подробнее, если будут дополнительные вопросы - без проблем отвечу.
Спасибо.
 
предположим что бд называется test... как вы пишете есть 2 поля id и type
как я понял надо взять максимальное значение для поля type при совпадении id
будет примерно вот такой запрос:
select max(test.type) from test group by id

в результате запроса, у вас будет по одному id с большим type
 
1) Тогда запрос главный надо переписывать, а на нем сидит еще с 10-ток обработчиков.. Или в отдельную функцию все это выносить.. Не совсем хочется..
2) Я плохо указал, что ID может быть или +, или пустым..
Тогда получаю, если оба айди пустые, тогда не что он покажет..
Или оба плюса будет.
Или будет + и значение..
Можно избавить от плюсов простой заменой на значение, например 100...
Но с пустыми как будут обстоять дела?
Спасибо за ответ.
 
запросы mysql поддерживают и условия IF можете на уровне запроса заменять пустое значение чем угодно, зачем придумывать велосипед, я бы сделал то, что вы хотите на уровне слияния 2-х бд, ничего переписывать не придется тогда, как я понимаю...

синтаксис как-то так if(isnull())
 
Назад
Сверху