Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Скорость сравнения строк


Автор: m31 18.2.2008, 22:25
Есть база в ней есть таблица1  из которой я беру значение1.
И есть таблица2 из которой я беру значение 2.

Затем делаю сравнение этих двух значений через иф-елс
if ($значение1==$значение2){
echo "$значение1";
        }
        else
               {
               }
но значений оочень много и это всё делается оочень долго. 

Кто может посоветовать быстрый способ провести сравнения и вывести все совподающие результаты?

Автор: GeneralElectric 18.2.2008, 22:34
Сравнивать средствами БД, разумеется.
Не нужно быть профи в программировании, чтобы догадаться.

Автор: m31 18.2.2008, 22:40
а можешь пример привести, просто я не очень хорошо умею работать с базами :( 

и вот ещё, я вывожу список из базы и говорю ей чтобы она его отсортировала, но она не сортирует(
$query3 = "SELECT * FROM $userstable3 ORDER BY Gorod" ;
Gorod - на русском в базе, но сортировка не происходит( 

Автор: GeneralElectric 18.2.2008, 22:45
Тебе не кажется, что вопрос стоило бы задать попродробнее?

Добавлено через 1 минуту и 25 секунд
При сортировке совсем не сортирует, даже цифры, или сортирует, но криво?

Автор: m31 18.2.2008, 22:55
Криво как-то сортирует. 

по сравнению, можешь привести пример сравнения значение1 и значение2 средствами базы(mysql) и если они одинаковые то вывод значения на экран. 

Автор: GeneralElectric 18.2.2008, 23:07
Цитата(m31 @  18.2.2008,  22:55 Найти цитируемый пост)
Криво как-то сортирует. 

http://phpfaq.ru/charset

Цитата(m31 @  18.2.2008,  22:55 Найти цитируемый пост)
по сравнению, можешь привести пример сравнения значение1 и значение2 средствами базы(mysql) и если они одинаковые то вывод значения на экран.  

Окей. Пример сравнения средствами базы:
Код

WHERE field1=field2

Желаю приятного кодинга

Автор: m31 18.2.2008, 23:24
WHERE field1=field2 
а как такое на php реализовать??? у меня не выходит сравнение провести( 

Автор: GeneralElectric 18.2.2008, 23:35
Ты можешь человеческим языком описать свои таблицы, связи между ними ,содержащиеся данные и задачу, зачем понадобилось сравнение? или ты сам ничего этого не знаешь?

Автор: m31 18.2.2008, 23:49
есть база base.
в ней есть 2 таблицы goroda и ourgaroda.

goroda содержит несколько полей id(просто номер), id_gorod(номер города, число), name_gorod(название города, имя на русском) 
ourgaroda содержит несколько полей id(просто номер), id_ourgorod(номер города, число), name_ourgorod(название города, имя на русском) 

в goroda содержиться полный список всех городов,
а в ourgaroda содержит только список городов фирм с корорыми работаем.

в goroda гораздо больше чем в ourgaroda городов, но в ourgaroda они могут повторяться.

И так что нужно сделать. 
сравноть  id_gorod и id_ourgorod, если они равны, то вывести название города(name_ourgorod), но тут нужно сделать так чтобы города не повторялись. 
если не совподают, то ничего не выводить. 

Вот приблизительно так. 

Автор: GeneralElectric 18.2.2008, 23:54
И зачем это нужно?

Автор: m31 18.2.2008, 23:55
для сайта

Автор: GeneralElectric 19.2.2008, 00:16
Очаровательный ответ. 
Вопросов болше не имею.

Автор: source777 19.2.2008, 00:22
Цитата(m31 @  18.2.2008,  23:49 Найти цитируемый пост)
в goroda содержиться полный список всех городов,а в ourgaroda содержит только список городов фирм с корорыми работаем.
А одно поле-признак, работаешь ты с этим городом или нет, тебе не приходило в голову создать? О какой оптимизации может ийти речь с такой дилетантской структурой БД?.. Разделом форума ты явно ошибся! 
Кстати приписывать имя таблицы к именам полей - это моветон, особенно в качестве суффикса...

Автор: A1ekcandr 19.2.2008, 09:36
используй LEFT JOIN , может поможет инфа http://66.102.9.104/search?q=cache:uU3BcK6mUEUJ:www.javenue.info/post/20+inner+join+sql&hl=ru&ct=clnk&cd=1&gl=ru&lr=lang_ru

Автор: GeneralElectric 19.2.2008, 09:49
A1ekcandr, ты уверен, что задачу надо решать именно в такой постановке? а именно шерстить большую базу для штатной работы сайта?

Автор: bars80080 19.2.2008, 11:16
Господи, да вы убили парня, неужели сложно вначале предложить решение по ситуации, а потом уже толкать нравоучения, типа: "вали отсюда и пока не исправишься не приходи"

Код

$query3 = "SELECT ourgoroda.name_ourgorod as name FROM goroda, ourgoroda where goroda.id_gorod=ourgoroda.id_ourgorod ORDER BY ourgoroda.name_ourgorod";


хотя бы так

Автор: source777 19.2.2008, 22:39
Цитата(bars80080 @  19.2.2008,  11:16 Найти цитируемый пост)
неужели сложно вначале предложить решение по ситуации, а потом уже толкать нравоучения,
Зачем же помогать человеку ошибаться, ошибиться он сможет и без посторонней помощи!

Автор: Aikus 20.2.2008, 08:37
Здесь тупое сравнение надо сделать 
Код

select * from goroda g, ourgaroda og where g.id_gorod=og.id_ourgorod

засовываешь эту строку в запрос и живешь нормально. БД учить надо...
блин не успел =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)