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
Форумы портала PHP.SU :: Версия для печати :: Как составить SQL запрос (двойной)
Форумы портала PHP.SU » » Работа с СУБД » Как составить SQL запрос (двойной)

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

1. igor3310 - 07 Мая, 2015 - 11:08:06 - перейти к сообщению
Здравствуйте!
Есть таблица в ней 4-е поля p1 , p2 , p3 , p4 - как сделать выборку когда идет поиск по нейже и надо чтоб выбрало когда результат = полям самой же таблицы? ( двойной запрос)

Сейчас так:
PHP:
скопировать код в буфер обмена
  1. 'SELECT * FROM LINKS WHERE (ORIGINAL_NUMS="'.$Number.'" AND ORIGINAL_BRAND="'.$Brand.'") OR (CROSS_NUMS="'.$Number.'" AND CROSS_BRAND="'.$Brand.'"

тоесть тут мы получим результат - несколько строк , а надо чтоб в 1 запросе этот же результат как бы сопоставлял с самой же таблицой с полями ORIGINAL_NUMS ORIGINAL_BRAND и уже получалась более по кол-ву выборка
2. Panoptik - 07 Мая, 2015 - 11:16:10 - перейти к сообщению
не совсем понятна суть вопроса.
что за выборка из выборки?

если что в запросе не закрыта скобка
и предпочтительней использовать тег SQL вмето PHP
3. igor3310 - 07 Мая, 2015 - 11:22:52 - перейти к сообщению
Это надо типа инер жоина или 2-го запроса к 1-й таблице - первый это поиск и будут совпадения (выберет несоклько строк) и надо что 2-й (как бы запрос ) вытянул еще строки совпадение которых есть с данными из первого запроса

и надо чтоб даные с 1 и 2 запроса были в общем резулте
(Добавление)
Пришло в голову такое:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *
  2.         FROM LINKS
  3.         INNER JOIN  ORIGINAL_NUMS=O.ORIGINAL_NUMS AND ORIGINAL_BRAND=O.ORIGINAL_BRAND OR CROSS_NUMS=O.CROSS_NUMS AND CROSS_BRAND=O.CROSS_BRAND
  4.         WHERE   (SELECT O.* FROM LINKS WHERE (ORIGINAL_NUMS="'.$Number.'" AND ORIGINAL_BRAND="'.$Brand.'") OR (CROSS_NUMS="'.$Number.'" AND CROSS_BRAND="'.$Brand.'")

(Добавление)
По смыслу так наверное хочется:

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT *
  3.         FROM LINKS
  4.         WHERE   ORIGINAL_NUMS=O.ORIGINAL_NUMS AND ORIGINAL_BRAND=O.ORIGINAL_BRAND OR CROSS_NUMS=O.CROSS_NUMS AND CROSS_BRAND=O.CROSS_BRAND  OR ORIGINAL_NUMS="'.$Number.'" AND ORIGINAL_BRAND="'.$Brand.'") OR (CROSS_NUMS="'.$Number.'" AND CROSS_BRAND="'.$Brand.'" (SELECT O.* FROM LINKS WHERE (ORIGINAL_NUMS="'.$Number.'" AND ORIGINAL_BRAND="'.$Brand.'") OR (CROSS_NUMS="'.$Number.'" AND CROSS_BRAND="'.$Brand.'")
  5.  

 

Powered by ExBB FM 1.0 RC1