[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запутался в джоинах
VeRTak

SELECT
Complexes.title as complex,
Subways.name as metro
FROM VeRTak\Models\Site Site
JOIN VeRTak\Models\SiteComplexes SiteComplexes
ON SiteComplexes.siteid = Site.id
RIGHT JOIN VeRTak\Models\Complexes Complexes
ON Complexes.id = SiteComplexes.complexid
AND Complexes.title LIKE '".$_GET['term']."%'
JOIN VeRTak\Models\Complexsubway Complexessubway
ON Complexessubway.complexid = Complexes.id
LEFT JOIN VeRTak\Models\Subways Subways
ON Subways.id = Complexessubway.subwayid
AND Subways.name LIKE '".$_GET['term']."%'
WHERE Site.domain LIKE '%".$server."%'


Имею вот такой запрос. Ввожу совпадение с комплексом. Получаю, что и хочу

complex - Название комплекса
metro - null

Ввожу другое слово в поиск, что бы совпало с названием метро. Но в ответ вообще ничего не получаю. А нужно что бы было

complex - null
metro - Название метро


В общем запутался в джонах. Все никак не доходит до меня как нужно правильно сделать
VeRTak
Проблема не в join. С логикой напутал biggrin.gif
AllesKlar
Цитата (VeRTak @ 29.09.2017 - 18:51)
AND Complexes.title LIKE '".$_GET['term']."%'

Ты это серьезно??? blink.gif
Прям вот так вот в запрос к базе сырое значение из $_GET?

_____________
[продано копирайтерам]
VeRTak
Цитата (AllesKlar @ 30.09.2017 - 16:32)
Ты это серьезно??? 
Прям вот так вот в запрос к базе сырое значение из $_GET?


Это не сырой sql. Он в обертке. В данном случае накидывал запрос без bind параметров. Вообще по моему можно и так так писать. Судя из документации


In PHQL, we've implemented a set of features to make your access to databases more secure:
Bound parameters are part of the PHQL language helping you to secure your code
PHQL only allows one SQL statement to be executed per call preventing injections
PHQL ignores all SQL comments which are often used in SQL injections
PHQL only allows data manipulation statements, avoiding altering or dropping tables/databases by mistake or externally without authorization
PHQL implements a high-level abstraction allowing you to handle tables as models and fields as class attributes


https://docs.phalconphp.com/en/3.2/db-phql
AllesKlar
Цитата (VeRTak @ 30.09.2017 - 14:41)
Это не сырой sql. Он в обертке. В данном случае накидывал запрос без bind параметров. Вообще по моему можно и так так писать. Судя из документации


Я написал "сырое значение $_GET", а не "сырой sql"
В обертке ли оно или нет, не имеет значения.
Значение имеет, что ты передаешь строку (запрос) куда-либо, и эта строка-запрос у тебя может иметь неверный синтаксис (либо иньекцию), если там будет одинарная кaвычка.

дабы долго не разводить дискуссию, просто сделай вызов по url http://foo.baz?term=asdf'fdsa
Скрин результата можешь выложить сюда smile.gif

_____________
[продано копирайтерам]
VeRTak
Цитата (AllesKlar @ 30.09.2017 - 18:55)
Я написал "сырое значение $_GET", а не "сырой sql"
В обертке ли оно или нет, не имеет значения.
Значение имеет, что ты передаешь строку (запрос) куда-либо, и эта строка-запрос у тебя может иметь неверный синтаксис (либо иньекцию), если там будет одинарная кaвычка.

дабы долго не разводить дискуссию, просто сделай вызов по url http://foo.baz?term=asdf'fdsa
Скрин результата можешь выложить сюда


Да все хорошо у меня там, поиск показывает что ничего не нашел :) Я же говорю, в бою у меня запрос с bind идет

Как то так это выглядит


SELECT
Site.domain,
IF(Complexes.t_title = 1, Complexes.title, Complexes.n_title) as complex,
Complexes.id as complexid,
Subways.name as metro,
Subways.id as metroid
FROM VeRTak\Models\Site Site
JOIN VeRTak\Models\SiteComplexes SiteComplexes
ON SiteComplexes.siteid = Site.id
LEFT JOIN VeRTak\Models\Complexes Complexes
ON Complexes.id = SiteComplexes.complexid
AND IF(Complexes.t_title = 1, Complexes.title, Complexes.n_title) LIKE :search:
И так далее
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.