X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Сравнение значений
yuriy_hb
yuriy_hb
Topic Starter сообщение 3.8.2010, 13:52; Ответить: yuriy_hb
Сообщение #1


Кто сможет подсказать как реализовать вот такое сравнение:
Есть 2 таблицы в MySQL.
В ячейке одной таблице хранятся значения в формате: (1,2,3,4,5) в другой, которая называеится фильтром хранятся в таком же формате другие значения: (3,4).

Делаю выборку:
[PHP]
$complekt = "
SELECT
$rowFilter[name].request as request,
$rowFilter[name].type as typeauto,
$rowFilter[name].groupZapch as groupzapch,
$rowFilter[name].data as data,
$rowFilter[name].timenow as timenow,
markaauto.marka as marka,
modelauto.model as model,
groupzap.group as gr,
region.city as city,
supportState.state as state,
supportState.bookMark as bookMark,
supportState.answer as answer

FROM
$rowFilter[name],
markaauto,
modelauto,
groupzap,
region,
supportState

WHERE
$rowFilter[name].marka = markaauto.id_Marka and
$rowFilter[name].model = modelauto.id_Model and
$rowFilter[name].groupZapch = groupzap.idGroup and
$rowFilter[name].region = region.id_REG and
supportState.email = '$_SESSION[email]' and
supportState.request = $rowFilter[name].request and
$rowFilter[name].groupZapch in ($rowFilter[groupzapch])";//сдесь находятся два разных значения, что упоминалось выше: в $rowFilter[name].groupZapch - находятся (1,2,3,4,5) в $rowFilter[groupzapch] - (3,4)
[/PHP]

Теперь мне нужно отобрать только те строки, которые удовлетворяют выражению фильтра: тоисть нужно чтобы отобралось только строки из значениями - 3,4, а остальные нет.
Пытался использовать оператор "in", но он отбирает только одно значения из множества. А как можно отобрать если соотношение находится многое к многим?:rolleyes:
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 3.8.2010, 14:09; Ответить: alexdrob
Сообщение #2


на пхп implode + array_intersect
на mysql вам наверное придётся писать функцию вспомогательную, вы посмотрите что чем дальше тем становится сложнее и задумайтесь всё же над этим постом
http://www.html.by/showpost.php?p=76198&postcount=9
очень скоро вы станете на том что ваша задача просто не будет иметь решения)) или решение будет громоздким и может повлеять на быстродействие и ошибки))
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 3.8.2010, 17:44; Ответить: Mulder_hb
Сообщение #3


Как называется ячейка с данными и ячейка с фильтром? Я предположил, что `data` и `filter`.
[PHP]<?php
$result = mysql_query($complekt);
for ($res = array(); $row = mysql_fetch_assoc($result); $res[] = $row)
foreach ($res as $val) {
if ($val["data"] != $var["filter"]) {
continue;
}
echo "<pre>";
print_r($val);
echo "</pre>";
}

?>[/PHP]
Как-то так.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 3.8.2010, 18:18; Ответить: alexdrob
Сообщение #4


Mulder, судя по прошлому его топику у него не по 1му значению а именно через запятую в одной строке они записаны, надо типа

[PHP]$ar1=implode(',',$row['filter']);
$ar2=implode(',',$row['data']);
$ar=array_intersect($ar1,,$ar2);
print_r($ar);[/PHP]

так мы получим значения одинаковые, но получается что нужно вначале извлеч все данные из таблицы потом пробежать по ним потом составить новый sql на основе полученного нового массива $ar и сделать новую выборку
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yuriy_hb
yuriy_hb
Topic Starter сообщение 3.8.2010, 19:29; Ответить: yuriy_hb
Сообщение #5


(alexdrob @ 3.8.2010, 21:18) *
Как называется ячейка с данными и ячейка с фильтром?

Ячейка с даными называется $rowFilter[name].groupZapch а ячейка с фильтром - $rowFilter[groupzapch].
Даные в обох ячейках расположены через запятую: (1,2,3,4,5...)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 3.8.2010, 21:21; Ответить: Mulder_hb
Сообщение #6


Вы скажите как надо. Если у меня строка 1,2,3,4, а фильтр 2,4, то строка удовлетворяет условию?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 4.8.2010, 0:48; Ответить: alexdrob
Сообщение #7


ну похоже что да) ему нужно найти пересечение множеств, в php это array_intersect, но ему нужно в самом sql запросе условие такое, но в mysql я не знаю есть ли такая функция, можно написать самому конечно попробовать))
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yuriy_hb
yuriy_hb
Topic Starter сообщение 4.8.2010, 9:03; Ответить: yuriy_hb
Сообщение #8


(Mulder_hb @ 4.8.2010, 00:21) *
Вы скажите как надо. Если у меня строка 1,2,3,4, а фильтр 2,4, то строка удовлетворяет условию?

Да, строка удовлетворяет условию...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yuriy_hb
yuriy_hb
Topic Starter сообщение 4.8.2010, 9:28; Ответить: yuriy_hb
Сообщение #9


(alexdrob @ 4.8.2010, 03:48) *
ему нужно найти пересечение множеств, в php это array_intersect

Вы совершенно правы, как в самом MySQL реализовать такую проверку?:rolleyes:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 4.8.2010, 10:13; Ответить: Mulder_hb
Сообщение #10


Как вам уже говорили у вас не соблюдена нормальная форма, отсюда и такие проблемы, изобретение велосипедов, граблей и костылей. Вы вот не захотели изменить структуру бд и теперь тем дальше в лес, тем больше дров. Подгоните бд хотя бы под первую нормальную форму (в идеале хорошо было бы и под вторую, и под третью). И тогда задача решается элементарно:
SELECT * FROM `table` WHERE `id` = 2 AND `id` = 3;


А так задача превращается в насилование сервера мускула и собственного времени на изучение теории запросов. Сначала нужно разбить ваш фильтр на составляющие, затем сделать выборку каждого составлющего, а затем определить область пересечения всех выборок.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) ExchangeRates.Pro: сравнение цен Bitcoin/Crypto обменников, бирж, P2P рынка 🚀
Поможем найти лучшие цены на обмен 34 криптовалют в 255 странах
8 ExchangeRatesPro 3107 12.2.2020, 18:46
автор: ExchangeRatesPro
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыСравнение 2-х страниц на одну тему
1 rad_mw 1039 28.6.2018, 18:27
автор: Napoleon-007
Открытая тема (нет новых ответов) Php - скрипт. Сравнение строк в csv файлах
2 PoliteX 2477 21.7.2015, 11:50
автор: PoliteX
Открытая тема (нет новых ответов) Сравнение на основе регулярных выражений. Бюджет 40 евро.
5 Nickondr 4755 1.10.2011, 23:15
автор: -Webmaster-
Открытая тема (нет новых ответов) Вывод в цикле значений из базы!
3 Panich 4246 27.5.2011, 16:14
автор: -Panich-


 



RSS Текстовая версия Сейчас: 28.3.2024, 16:12
Дизайн