PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 6
flash_br Отправлено: 30 Ноября, 2014 - 11:23:36 • Тема: Ошибка #1242 - Subquery returns more than 1 row • Форум: SQL и Архитектура БД

Ответов: 20
Просмотров: 272
Лююююдиииии, хелп плиз ... Огорчение
(Добавление)
Вопрос решён!!!))))

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT import.`marka_am`, import.`tsk` FROM `import_sales_2014-11-28` import WHERE import.`tsk` = 'ТСК GM' AND EXISTS(SELECT marki.`marka` FROM `marki_tsk_sales` marki WHERE marki.`tsk` = 'ТСК GM' AND import.`marka_am` LIKE CONCAT ('%',marki.`marka`, '%') )


этим мы вибираем авто, марки которых перечислены в первой табличке

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT import.`marka_am`, import.`tsk` FROM `import_sales_2014-11-28` import WHERE import.`tsk` = 'ТСК GM' AND NOT EXISTS(SELECT marki.`marka` FROM `marki_tsk_sales` marki WHERE marki.`tsk` = 'ТСК GM' AND import.`marka_am` LIKE CONCAT ('%',marki.`marka`, '%') )


а этот выбирает все авто, марки которых не перечислены в первой табличке Радость Хорошо
flash_br Отправлено: 30 Ноября, 2014 - 09:37:24 • Тема: Ошибка #1242 - Subquery returns more than 1 row • Форум: SQL и Архитектура БД

Ответов: 20
Просмотров: 272
Viper, а возможно это как-либо сделать именно средствами mysql? .. на php в цикле на раз-два, вот только это будет очень долго, учитывая, что в таблице, из которой и надо следать выборку, более 30000 строк Не понял
(Добавление)
Кое что получилось

первая имеет такой вид
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. marka   tsk    
  3. Опель   ТСК GM
  4. Шевроле ТСК GM
  5.  


вторая такой
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. marka_am        tsk    
  3.        
  4. Шевроле Нива    ТСК GM
  5. Шевроле Лач     ТСК GM
  6. Опель Корса     ТСК GM
  7. Шевроле Нива    ТСК GM
  8. Шевроле         ТСК GM
  9. Опель Астра     ТСК GM
  10. Шевроле Коб     ТСК GM
  11. Хендай Солярис  ТСК GM
  12. Ниссан Жук      ТСК GM
  13.  


CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `import_sales_2014-11-28`.`marka_am`, `import_sales_2014-11-28`.`tsk` FROM `marki_tsk_sales` INNER JOIN `import_sales_2014-11-28` ON `import_sales_2014-11-28`.`marka_am` LIKE CONCAT ('%', `marki_tsk_sales`.`marka`, '%') AND `import_sales_2014-11-28`.`tsk` = 'ТСК GM' AND `marki_tsk_sales`.`tsk` = 'ТСК GM'


такой запрос выводит, как и положено, 7 записей .... НО

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `import_sales_2014-11-28`.`marka_am`, `import_sales_2014-11-28`.`tsk` FROM `marki_tsk_sales` INNER JOIN `import_sales_2014-11-28` ON `import_sales_2014-11-28`.`marka_am` NOT LIKE CONCAT ('%', `marki_tsk_sales`.`marka`, '%') AND `import_sales_2014-11-28`.`tsk` = 'ТСК GM' AND `marki_tsk_sales`.`tsk` = 'ТСК GM'


выводит 11 записей(и ни одной верной), хотя надо 5, тех которые не совпадают с записями из первой таблички Огорчение
flash_br Отправлено: 29 Ноября, 2014 - 22:50:40 • Тема: Ошибка #1242 - Subquery returns more than 1 row • Форум: SQL и Архитектура БД

Ответов: 20
Просмотров: 272
Да, но для того, что бы делать такие запросы, надо знать значения a, b и c ... вот подзапросом

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `marka` FROM `marki_tsk_sales` WHERE `tsk` = 'GM'


я и хотел вытащить их ... или я что-то делаю не так?
flash_br Отправлено: 29 Ноября, 2014 - 22:19:44 • Тема: Ошибка #1242 - Subquery returns more than 1 row • Форум: SQL и Архитектура БД

Ответов: 20
Просмотров: 272
первая имеет такой вид
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. marka   tsk    
  3. Опель   ТСК GM
  4. Шевроле ТСК GM
  5.  


вторая такой
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. marka_am        tsk    
  3.        
  4. Шевроле Нива    ТСК GM
  5. Шевроле Лач     ТСК GM
  6. Опель Корса     ТСК GM
  7. Шевроле Нива    ТСК GM
  8. Шевроле         ТСК GM
  9. Опель Астра     ТСК GM
  10. Шевроле Коб     ТСК GM
  11. Хендай Солярис  ТСК GM
  12. Ниссан Жук      ТСК GM
  13.  


1. на выходе мне нужно посчиать количество машин из второй таблицы, марки которых есть в первой таблице (ну тут в принципе проблем нет)
2. И потом посчитать все остальные, марок которых нет в первой таблице (вот и из-за этого я и заморочился вопросом про нечто вроде LIKE IN ... т.к. сначала можно было бы сделать LIKE IN ****, а потом NOT LIKE IN ***)
flash_br Отправлено: 29 Ноября, 2014 - 17:50:17 • Тема: Ошибка #1242 - Subquery returns more than 1 row • Форум: SQL и Архитектура БД

Ответов: 20
Просмотров: 272
Viper пишет:
в чем смысл делать LIKE если у вас марки авто не в тексте, а "как есть"?


мне по факту нужен LIKE '%%' что бы из списка машин выбрать те, которые соответствуюс списку перечисленных марок, а их может быть мноооого .. перечислять все - не удобно
(Добавление)
Мелкий пишет:
И всё-таки у нас не принято поднимать старые темы, открыть новую предпочтительнее. Об этом даже должно было быть написано рядом с полем комментария.


Возможно и JOIN )))) но не понимаю как)))

А про оживление темы - пардоньте ))) наверное просто не заметил, где это написано .. (((
flash_br Отправлено: 29 Ноября, 2014 - 17:32:51 • Тема: Ошибка #1242 - Subquery returns more than 1 row • Форум: SQL и Архитектура БД

Ответов: 20
Просмотров: 272
Всем привет!
Дабы не плодить темы - напишу тут .. тем более, что по тематике как раз подходит ...

Дело вот в чём .. очень нужно сделать запрос типа (LIKE IN)

вот есть рабличка
---------------------------
| id | marka | tsk |
---------------------------
| 1 | опель | GM |
| 2 | шевроле| GM |
---------------------------
(сорри за корявую псевдографику)

я делаю запрос в другой таблице с обращением сюда

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT `marka_am`, `tsk`  FROM `import_sales_2014-11-28` WHERE `tsk` = 'GM' AND `marka_am` LIKE  (SELECT `marka` FROM `marki_tsk_sales` WHERE `tsk` = 'GM')
  3.  


и логично, что он мне отвечает

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. Subquery returns more than 1 row
  3.  


а мне так и надо т.к. в поле `marka_am` содержатся строки типа "Опель Астра, Опель Корса, Шевроле Кобальт, Шевроле нива" и т.д. и выбрать надо только то, что совпадпет с МАРКОЙ содержащейся в первой табличке ... тут скорее всего как-то регуляркой .... но я не знаю как .. интернеты копал целый день ... прошу помощи )))

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB