Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ошибка #1242 - Subquery returns more than 1 row [2]

 PHP.SU

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


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

> Описание: описание))
Viper
Отправлено: 29 Ноября, 2014 - 22:41:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Можно так

или так
CODE (SQL):
скопировать код в буфер обмена
  1. LIKE '%a%' OR LIKE '%b%' OR LIKE '%c%'


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
flash_br
Отправлено: 29 Ноября, 2014 - 22:50:40
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




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

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


я и хотел вытащить их ... или я что-то делаю не так?

(Отредактировано автором: 29 Ноября, 2014 - 22:51:14)

 
 Top
Viper
Отправлено: 29 Ноября, 2014 - 23:38:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




flash_br не совсем так. Подзапрос вам вернет набор строк, но не подставит их в LIKE или REGEXP.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
flash_br
Отправлено: 30 Ноября, 2014 - 09:37:24
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




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, тех которые не совпадают с записями из первой таблички Огорчение
 
 Top
Viper
Отправлено: 30 Ноября, 2014 - 10:32:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Можно через процедуры залепить. Но я в этом вам не помощник Огорчение


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
flash_br
Отправлено: 30 Ноября, 2014 - 11:23:36
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




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

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`, '%') )


а этот выбирает все авто, марки которых не перечислены в первой табличке Радость Хорошо
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB