MySQL соответствует с 2 полями -- mysql поле с участием match пол Связанный проблема

MySQL match against with 2 fields


0
vote

проблема

русский

У меня проблема с матчем () против () в mysql. Я не могу соответствовать 2 Columfields друг против друга, только если я использую процедуру, это понятно.

Теперь проблема: У меня есть запрос для поиска двойных записей (только потенциальные данные):

 <код> SELECT t1.acid,t2.acid, t1.Brand, t2.ModelNameRough,t1.ModelNameDetail, t2.ModelNameDetail,......... FROM ref_web_tb t1 join ref_web_tb t2 on t1.Brand = t2.Brand and t1.ModelNameRough = t2.ModelNameRough  and t1.BodyType ....(alot of other things to compare) and (t1.acid < t2.acid)   

Но это недостаточно. Есть поле под названием «Modelnameedetail», которые блокируются как: «1.9 TDI Comfort Variant DPF» или «1.9 TDI ComfortLine Variant DPF»

(только линия в комфорте отличается, но оба автомобиля имеют разные цены и так далее, но те же технические данные)

Так что я должен соответствовать T1.Modelname против T2.Modelname и использовать счет, чтобы проверить, будет ли имя почти одинаково. (Другое, что это будет ограничен данные, чтобы проверить, есть ли двойная запись, потому что есть много автомобилей с теми же техническими данными в той же грубоемоделе)

Процедура для матча () против () не проблема, я бы сделал это так: (просто тест)

 <код> DELIMITER $$  DROP PROCEDURE IF EXISTS `offensichtlich_doppelte` $$ CREATE PROCEDURE `offensichtlich_doppelte` (search_string TEXT) DETERMINISTIC READS SQL DATA BEGIN   SELECT t1.acid, t1.Brand,t1.ModelNameRough,t1.ModelNameDetail, MATCH (t1.ModelNameDetail) AGAINST (search_string) AS score      FROM ref_web_tb t1         limit 50;  END $$  DELIMITER ;    

Но теперь я понятия не имею, как использовать результаты запроса с процедурой?! Я обстоялся запутался, что делать сейчас; Может кто-нибудь дать мне подсказку, как я могу решить проблему?

и еще один короткий вопрос: Иногда такие вещи, как «GearBoxType» - это ноль. Если одна из технических месторождений является NULL, IT WONTGET перечислена. Могу ли я сделать что-то вроде:

 <код> SELECT * FROM ref_web_tb t1 join ref_web_tb t2 on .... and if gearboxtype is null then ignore gearboxtype ....   

?

Я думал что-то вроде:

 <код> SELECT *     FROM ref_web_tb t1 join ref_web_tb t2     on ....     and if(t1.gearboxtype is null, ignore, t1.gearboxtype = t2.gearboxtype)     ....   

будет работать, но кажется, что нет, потому что я не знаю, как игнорировать дело; ( (подождите .. это дело, может быть, ответ?)

спасибо за чтение;)

Английский оригинал

i have a problem with match() against() in MySQL. I cant match 2 columfields against each other, only if i use a procedure, thats clear.

Now the problem: I have a query to search double entries (only technnical data):

SELECT t1.acid,t2.acid, t1.Brand, t2.ModelNameRough,t1.ModelNameDetail, t2.ModelNameDetail,......... FROM ref_web_tb t1 join ref_web_tb t2 on t1.Brand = t2.Brand and t1.ModelNameRough = t2.ModelNameRough  and t1.BodyType ....(alot of other things to compare) and (t1.acid < t2.acid) 

but thats not enough. There is a field called "modelnamedetail" that locks like: "1.9 TDI COMFORT VARIANT DPF" or "1.9 TDI COMFORTLINE VARIANT DPF"

(only the line in comfort is different, but both of the cars have different prices and so on, but the same technical data)

So i have to match the t1.modelname against t2.modelname and use the score to check if the name is nearly the same. (otherwhise it would be a loooooot of data to check if there is a double entry, because there are alot of cars with the same technical data in the same roughmodel)

The procedure for the match() against() is no problem, i would do it like this: (just a test)

DELIMITER $$  DROP PROCEDURE IF EXISTS `offensichtlich_doppelte` $$ CREATE PROCEDURE `offensichtlich_doppelte` (search_string TEXT) DETERMINISTIC READS SQL DATA BEGIN   SELECT t1.acid, t1.Brand,t1.ModelNameRough,t1.ModelNameDetail, MATCH (t1.ModelNameDetail) AGAINST (search_string) AS score      FROM ref_web_tb t1         limit 50;  END $$  DELIMITER ;  

but now i have no idea how to use the query results with the procedure?! Im totaly confused what to do now ;( Can someone give me a hint how i can solve the problem?

And another short question: Sometimes stuff like "gearboxtype" is null. If one of the technical fields is null, it wontget listed. Can i do something like:

SELECT * FROM ref_web_tb t1 join ref_web_tb t2 on .... and if gearboxtype is null then ignore gearboxtype .... 

?

I thought something like:

SELECT *     FROM ref_web_tb t1 join ref_web_tb t2     on ....     and if(t1.gearboxtype is null, ignore, t1.gearboxtype = t2.gearboxtype)     .... 

would work, but it seems like not, because i dont know how to ignore the case ;( (wait .. is case maybe the answer? )

Thanks for reading ;)

</div
     
     
     

Список ответов

1
 
vote
<Р> Что касается вашего первого вопроса, я думаю курсоры есть что ты ищешь. <Р> Во-первых, вам нужно объявить некоторые переменные в процедуре, чтобы сохранить данные, которые вы получаете.
 <код> DECLARE a CHAR(10); DECLARE b INT;   
<Р> Так как курсор может перемещаться только один раз, вы должны обрабатывать <код> NOT FOUND исключение в конце.
 <код> DECLARE done INT DEFAULT FALSE; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;   
<Р> Затем вы объявляете <код> cursor для извлечения данных.
 <код>  DECLARE results CURSOR  FOR  SELECT stuff, otherstuff FROM someTable;   
<Р> Это просто создает курсор. Вы затем открыть его для того, чтобы фактически выполнить запрос:
 <код> OPEN results;   
<Р> Для того, чтобы получить результаты запроса, то вы итерацию над курсором:
 <код> read_loop: LOOP     FETCH results INTO a, b;     IF done THEN         LEAVE read_loop;     END IF;      --do your business here with a and b  END LOOP;   
<Р> И, наконец, вблизи курсора:
 <код> CLOSE results;   

Надеюсь, это поможет.

 

As for your first question, I think cursors is what you are looking for.

First, you need to declare some variables in your procedure, to store the data you get.

DECLARE a CHAR(10); DECLARE b INT; 

Since the cursor can be traversed just one time, you have to handle the NOT FOUND exception at the end of it.

DECLARE done INT DEFAULT FALSE; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; 

Then you declare a cursor to fetch your data.

 DECLARE results CURSOR  FOR  SELECT stuff, otherstuff FROM someTable; 

This just creates the cursor. You have then open it, in order to actually execute the query:

OPEN results; 

To get the results of your query, then, you iterate over the cursor:

read_loop: LOOP     FETCH results INTO a, b;     IF done THEN         LEAVE read_loop;     END IF;      --do your business here with a and b  END LOOP; 

And, finally, close the cursor:

CLOSE results; 

Hope this helps.

</div
 
 
 
 

Связанный проблема

-1  Как решить создание проблемы с таблицей в MySQL? [закрыто]  ( How to solve creating table issue in mysql ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> закрыт. Этот вопрос не соответствует Рекомендациям переполнения ...

0  Как я могу получить значение группы записей в группу столбца, используя с функцией в Laravel Eloquent ORM  ( How can i get count of records group by a column using with function in laravel ) 
Мне нужно получить количество записей <код> groupBy с использованием <код> with() функция, известная как adgerage loading. У меня есть две таблицы, имеющие ...

1  Как я могу выбрать, используя пересечение стоимости разделенного запятой?  ( How can i select using an intersection of comma separated value ) 
У меня есть столбец, удерживает значения, разделенные запятыми. <код> 1,2,3 4,6,7 2,3,8 12234,5467,232445,232455,11223 с заданными критериями массива (н...

1  Разбор XML-документа с PHP с использованием петли «Foreach»  ( Parsing xml document with php using foreach loop ) 
Я новичок в php, mysql и xml ... и пытался обернуть голову вокруг классов, объектов, массивов и петель. Я работаю над анализатором, который извлекает данные и...

13  Должен ли я совершить после одного выбора  ( Should i commit after a single select ) 
Я работаю с MySQL 5.0 от Python с помощью модуля MySQLDB. Рассмотрим простую функцию для загрузки и возврата содержимого всей таблицы базы данных: <код> d...

0  MySQL генерирует счетчик в режиме реального времени, сгруппированный родительским идентификатором  ( Mysql generate real time counter grouped by parent id ) 
У меня есть две таблицы: Родительская информация и AMP; Зависимая информация Структуры таблицы следующие: Родитель <код> ID | First | Last |...

0  Создание электронной почты на основе запроса MySQL  ( Generating an email based on mysql query ) 
У меня есть 2 таблицы, отображаемые ниже. Похожие словари: . + -------------------------------- + |. Пользователь |. ilike |. + ---------------------------...

0  Набор ToggleButton состояние из входящих данных JSON  ( Set togglebutton status from incoming json data ) 
<Р> Я пытаюсь следовать Android учебник , чтобы изменить базу данных MySQL данные из приложения Android. Я довольно новый для концепции JSON синтаксического р...

0  Как я могу выбрать следующее бронирование MySQL?  ( How can i select the next reservation mysql ) 
У меня есть таблица, вызывающая бронирование, и она содержит все бронирование для каждого автомобиля. И у меня есть поле резервированияStatus, которое означае...

0  Группировка итогов нестандартными кварталами в MySQL  ( Grouping totals by non standard quarters in mysql ) 
У меня есть простая таблица, которая включает в себя продавец, покупатель, дату транзакции, а также всего. Я хочу суммировать транзакции для каждого продавц...

1  Транзакции mysql и php  ( Transactions mysql and php ) 
Я запутался ABT работает транзакциями через PHP-скрипт. В моем MySQL AutoCommit устанавливается на 1, Тем не менее, когда я запускаю скрипт ex: mysql_query ...

0  Я не могу получить данные из трех стол для получения ошибки # 1111 Неверное использование групповой функции  ( I am not able to get data from three table geting error 1111 invalid use of gro ) 
У меня есть три таблицы <код> table A ------------------------------------------ filing_no | pet_name | res_name | court_no --------------------------------...

55  Как разблокировать с Mysqladmin Flush Hosts  ( How to unblock with mysqladmin flush hosts ) 
Я прошел через подобные случаи, перечисленные здесь, но это, кажется, не работает. Я использовал MySQL Workbench, чтобы установить соединение с моей базой д...

2  Найти реалированные данные таблицы1 в Таблице2  ( To find realted data of table1 in table2 ) 
Table1 имеет некоторые данные как категории Table2 имеет некоторые данные, которые реализуются в категориях Table1 и соотношение между двумя таблицами...

0  Вставить арабский с помощью PDO не работает  ( Insert arabic using pdo is not working ) 
Я очень глубоко укорую в этом и посмотрите много вопросов, и это не работает Каждый раз, когда я пытаюсь вставить арабский, он показывает так (?????) <Сильн...

Связанный проблема

-1  Как решить создание проблемы с таблицей в MySQL? [закрыто] 
0  Как я могу получить значение группы записей в группу столбца, используя с функцией в Laravel Eloquent ORM 
1  Как я могу выбрать, используя пересечение стоимости разделенного запятой? 
1  Разбор XML-документа с PHP с использованием петли «Foreach» 
13  Должен ли я совершить после одного выбора 
0  MySQL генерирует счетчик в режиме реального времени, сгруппированный родительским идентификатором 
0  Создание электронной почты на основе запроса MySQL 
0  Набор ToggleButton состояние из входящих данных JSON 
0  Как я могу выбрать следующее бронирование MySQL? 
0  Группировка итогов нестандартными кварталами в MySQL 
1  Транзакции mysql и php 
0  Я не могу получить данные из трех стол для получения ошибки # 1111 Неверное использование групповой функции 
55  Как разблокировать с Mysqladmin Flush Hosts 
2  Найти реалированные данные таблицы1 в Таблице2 
0  Вставить арабский с помощью PDO не работает 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.