@hrvasiliy

Как сделать выборку по 2-м одинаковым полям?

Пример таблицы: sqlfiddle

Пытаюсь разобраться как сделать выборку по 2-м полям, например, car_brand и name. Смысл в том, что у Ивана может быть несколько машин, я пытаюсь выбрать машины какого-то определенного человека и только одного бренда, после выборки я записываю ID в БД и ставлю status = 1 и продолжаю выборку. То есть в данном примере после первого запроса я должен получить: 1-ю и 5-ю строки. (Иван Иван и Honda Honda)...
Пробовал разные способы, не выходит.

UPD:
Моделирование того, что я пытаюсь сделать.
1. sqlfiddle.com/#!9/0ecfec/80
2. sqlfiddle.com/#!9/dede9/3
3. sqlfiddle.com/#!9/375b08/13
4. sqlfiddle.com/#!9/968202/1
5. sqlfiddle.com/#!9/24944/1

Но не уверен, что это всегда будет верно работать.
  • Вопрос задан
  • 300 просмотров
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
UPD2: Кароче так: Из долгих диалогов - задача обойти всю базу, выбрать по 1 юзеру, затем выбрать все одинаковые пары юзер - бренд, сделать с ними шаманство, записать обратно статус 1.
1) Получаем возможные пары юзер - машина, запоминаем в массив.
SELECT distinct
  `name`, `car_brand` 
FROM 
  `drivers`
where `status` = 0

2) далее форичем перебираем значения и подставляем в запрос:
SELECT *
FROM   `drivers`
where   `name` = '$name' and `car_brand`= '$brand' and `status` = 0

3) получаем выборку, делаем магию, делаем апдейт по ид.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
SELECT *, COUNT(car_brand) as total_cars
FROM 
  `drivers`
GROUP BY car_brand, name

Берём 1-ю запись и подставляем значения (все последующие - аналогично):
SELECT  *
FROM   `drivers`
    where 
    `car_brand` = "Honda"
    and 
    `name` = "Иван"
    and 
    `status` = 0
LIMIT 2

и получаем:
id	car_brand	name 	status
------------------------------------------
1 	Honda 		Иван 	0
5 	Honda 		Иван 	0
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы