ОК, так что этот человек заставил меня разорвать мои волосы на несколько часов. Я чувствую, что есть что-то очевидное, что я пропускаю.MySQL SQL Select Query with Multiple Sub-Selects
У меня есть 2 таблицы, службы и марки
service
-------
id
brand
brand
-----
id
brandName
Так service.brand может быть любой из них:
Blank
"Other"
Integer (matches brand.id)
String (matches brand.brandName)
String (Not Blank, Not Other, Not brand.brandName)
Я пытаюсь написать запрос, который будет вытащите правильный бренд из таблицы брендов, и если значение service.brand отсутствует в brand.id или brand.brandName, тогда отобразите все, что есть.
До сих пор у меня все работает, за исключением того, что он не потянет запись, если service.brand не был пустым, а не другим, а не в brand.id, а не в brand.brandName. (который я называю OtherThanOther отсюда).
Теперь моя последняя попытка тянет в основном правильную, но поле OtherThanOther растягивается много раз, например, если общее количество записей - 40, другое - одна и та же запись почти 20 раз. ПОМОГИТЕ!
Моя последняя попытка ..
select
s.*, b.brandName as bname
from
service s, brand b
where
s.brand = b.brandName
or
s.brand = b.id
or
s.brand = 'Other'
or
s.brand = ''
or
(
s.brand not in (select brandName from brand)
and
s.brand not in (select id from brand)
and
s.brand != 'Other'
and
s.brand != ''
)
Пример таблицы данных
service
-------
1 5
2 Dell
3 SomeRandom
4
5 Other
brand
-----
1 HP
2 Gateway
3 Dell
4 Compaq
5 Toshiba
мои результаты запроса ..
(service.id, service.brand, brand.id, brand.brandName, bname)
-------------------------------------------------------------
1 5 5 Toshiba Toshiba
2 Dell 3 Dell Dell
3 SomeRandom, brand.id, brand.brandName, brand.brandName
3 SomeRandom, brand.id, brand.brandName, brand.brandName
3 SomeRandom, brand.id, brand.brandName, brand.brandName
3 SomeRandom, brand.id, brand.brandName, brand.brandName
3 SomeRandom, brand.id, brand.brandName, brand.brandName
4 '', null, null, null
5 Other, null, null, null
Мне это нужно просто тянуть SomeRandom раз, группа по воны 't работает, потому что может быть несколько полей с тем же значением, что и SomeRandom. Любая помощь очень ценится.
Спасибо!
присоединиться к двум таблицы и использование CASE – ConsiderItDone
Можете ли вы опубликовать ответ о том, как это будет работать? –
Проверьте мой ответ и скажите, будет ли это работать для вас. –