[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: SELECT из одной таблицы по значению из другой
Lutsk
Подскажите неопытному, как вывести из таблицы категории значение поля "name" (название категории),
"id_cat" которого соответствует значению поля "cat" в таблице "produkt" товаров?

Поля в таблица "categories" категории:
-----------------
id_cat | name
-----------------
Таблица "produkt" товаров:
------------------------
id_prod | cat | title
------------------------

Написал запрос:

$query="SELECT `name`"
. " FROM `categories` "
. " LEFT JOIN `produkt` ON `categories` "
. " WHERE `categories`.`id` = `produkt`.`cat` ";


Но не выводит ничего...



Спустя 4 минуты, 36 секунд (27.06.2012 - 13:45) T1grOK написал(а):
Критерий соединения не правильно написан.(ON и WHERE синонимы, но используются в совершенно разных контекстах)
$query="SELECT `name`"
. " FROM `categories` "
. " LEFT JOIN `produkt` "
. " ON `categories`.`id` = `produkt`.`cat` ";

Подозреваю, что нужно так. :)

Спустя 10 минут, 7 секунд (27.06.2012 - 13:55) Lutsk написал(а):
T1grOK, так выводит, но первое значение из таблицы `categories`. А нужно чтоб `categories`.`id` = `produkt`.`cat`. Правда, в запросе вместо `cat` должна подставляться переменная $obj->cat.
Типа такого: `categories`.`id` = `produkt`." . $obj->cat . " ";

Спустя 1 час, 15 минут, 14 секунд (27.06.2012 - 15:10) Lutsk написал(а):
Спасипо, разобрался уже сам. В итоге:
$query="SELECT `name`"
. " FROM `categories` AS a"
. " LEFT JOIN `produkt` AS b"
. " ON a.`id` = b.`cat`"
. " WHERE b.`cat` = $obj->cat";

Спустя 8 минут, 19 секунд (27.06.2012 - 15:18) sergeiss написал(а):
Lutsk - а зачем так "хитро" объединять строки? Можно то же самое написать намного проще, в виде одной строки; так будет намного проще изменять/дополнять запрос:

$query=
"SELECT `name`
FROM `categories` AS a
LEFT JOIN `produkt` AS b
ON a.`id` = b.`cat`
WHERE b.`cat` =
$obj->cat";

Спустя 44 минуты, 45 секунд (27.06.2012 - 16:03) vital написал(а):
Цитата (sergeiss @ 27.06.2012 - 14:18)
Lutsk - а зачем так "хитро" объединять строки? Можно то же самое написать намного проще, в виде одной строки; так будет намного проще изменять/дополнять запрос:

$query=
"SELECT `name`
FROM `categories` AS a
LEFT JOIN `produkt` AS b
ON a.`id` = b.`cat`
WHERE b.`cat` =
$obj->cat";

Дело вкуса вобщем-то.
Мне вот не очень нравится, когда нету отступов, как у тебя.

А большие скл запросы я вообще пишу в HEREDOC синтаксисе..

Спустя 34 минуты, 44 секунды (27.06.2012 - 16:38) sergeiss написал(а):
vital - тут дело не в отступах и не в Хередоке, а в том, что у ТС сейчас сделано вообще с конкатенацией строк, очень тяжело воспринимается.. А отступы я тоже делаю, чтобы потом быстрее разбираться в написанном.
Быстрый ответ:

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