У меня проблема с match() против() в MySQL. Я не могу совместить 2 columfields друг против друга, только если я использую процедуру, это ясно.MySQL сопоставляется с двумя полями
Теперь проблема: У меня есть запрос для поиска двойных записей (только technnical данные):
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)
, но это еще не достаточно. Существует поле, называемое «modelnamedetail», который блокирует как: «1,9 TDI COMFORT ВАРИАНТ DPF» или «1,9 TDI COMFORTLINE ВАРИАНТ DPF»
(только линия в комфорте отличается, но оба автомобилей имеют разные цены и т. д., но те же технические данные)
Так что я должен сопоставить имя t1.modelname с именем t2.modelname и использовать оценку, чтобы проверить, почти ли это имя. (otherwhise было бы loooooot данных, чтобы проверить, есть ли двойная запись, потому что есть много автомобилей с теми же техническими данными в той же самой грубой модели)
Процедура для матча() против() нет проблема, я хотел бы сделать это следующим образом: (только тест)
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 ;
но сейчас я понятия не имею, как использовать результаты запроса с процедурой ?! Im суммарно спутать, что теперь делать; ( Может кто-нибудь дать мне подсказку, как я могу решить эту проблему
И еще один короткий вопрос: Иногда такие вещи, как «gearboxtype» является нулевой Если один из технических областей?. имеет нулевое значение, то 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)
....
будет работать, но кажется, что нет, потому что я не знаю, как игнорировать случай; ( (подождите .. это может быть ответ?)
Спасибо за чтение;)
Можете ли вы объяснить второй вопрос? Разве вы не можете просто поставить предложение «WHERE geartype IS NOT NULL»? – Cynical
Эй, öähm, как я уже сказал, я присоединяюсь к таблице на себе. Иногда некоторые поля в условии соединения равны нулю. Если я присоединяюсь к t1.gearboxtype в t2.gearboxtype, и оба они равны null, он dosnt считается равным и объединение терпит неудачу, даже все остальные поля равны. Так что я должен игнорировать поле в conditon, если его значение null, но все же сравнивает непустые поля. (некоторые поля arnt заполнены, потому что у нас не было данных и т. Д.) Надеюсь, вы понимаете, что я имею в виду. – user3793935
Что бы я ни делал сейчас: и if ((t1.GearBoxType равно null) и (t2.GearBoxType равно null), t1.Brand = t2.Brand, t1.GearBoxType = t2.GearBoxType) (бренд cant be null) Возможно, это не самый красивый вариант, но он работает. – user3793935