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 :: Версия для печати :: Запрос MySQL
Форумы портала PHP.SU » » Вопросы новичков » Запрос MySQL

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

1. event - 05 Мая, 2014 - 20:54:55 - перейти к сообщению
Привет.
Есть у меня такой запрос:

PHP:
скопировать код в буфер обмена
  1. $mysqli->query("SELECT p.id, p.cat, p.name, p.link, p.video, p.description, p.image1, p.image2, p.price, p.time, p.added, c.name AS cat_name FROM portfolio as p LEFT JOIN categories AS c ON p.cat = c.id")


Он работает, но мне нужно добавить к нему еще одну штуку, наверное еще один left join, нужно чтобы он вытаскивал с таблицы categories ячейку name, где WHERE id = p.cat AND parent_id = '0'.

Как это можно осуществить, а то как не пробую ничего не получается.

Заранее спасибо.
2. 3d_killer - 05 Мая, 2014 - 21:31:35 - перейти к сообщению
а это что? cat_name
(Добавление)
CODE (SQL):
скопировать код в буфер обмена
  1. $mysqli->query("SELECT p.id, p.cat, p.name, p.link, p.video, p.description, p.image1, p.image2, p.price, p.time, p.added, c.name AS cat_name FROM portfolio as p LEFT JOIN categories AS c ON p.cat = c.id AND с.parent_id = '0'")
3. event - 05 Мая, 2014 - 22:23:43 - перейти к сообщению
3d_killer, cat_name - название раздела, а то что я хочу сделать еще это подкатегория этого раздела.

Там у меня в таблице дерево:
id parent_id name
4. 3d_killer - 05 Мая, 2014 - 22:25:42 - перейти к сообщению
3d_killer пишет:
нужно чтобы он вытаскивал с таблицы categories ячейку name

c.name
categories AS c
на сколько я понял тот запрос который я написал соответствует тому что вы написали
5. event - 06 Мая, 2014 - 10:07:58 - перейти к сообщению
Короче говоря, есть таблица MySQL portfolio:
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `portfolio` (
  2.   `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `cat` int(10) NOT NULL DEFAULT '0',
  4.   `name` varchar(255) NOT NULL DEFAULT '',
  5.   `link` varchar(255) NOT NULL DEFAULT '',
  6.   `video` varchar(255) NOT NULL DEFAULT '',
  7.   `description` text NOT NULL,
  8.   `image1` varchar(255) NOT NULL DEFAULT '',
  9.   `image2` varchar(255) NOT NULL DEFAULT '',
  10.   `price` varchar(255) NOT NULL DEFAULT '',
  11.   `time` varchar(255) NOT NULL DEFAULT '',
  12.   `added` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  13.   `userid` int(10) UNSIGNED NOT NULL DEFAULT '0',
  14.   PRIMARY KEY (`id`)
  15. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;


И есть такой запрос:

PHP:
скопировать код в буфер обмена
  1. $mysqli->query("SELECT * FROM portfolio");


Мне нужно добавить к этому запросу 2 пункта, чтобы он вытаскивал из таблицы CATEGORIES имя категории:

Таблица CATEGORIES:

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `categories` (
  2.   `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `parent_id` int(10) NOT NULL DEFAULT '0',
  4.   `name` varchar(255) NOT NULL DEFAULT '',
  5.   PRIMARY KEY (`id`)
  6. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=71 ;
  7.  


А теперь в запрос надо добавить:
1. Чтобы вытаскивать поле name из таблицы categories, где WHERE id = полю cat в таблице portfolio
2. Чтобы вытаскивать поле name из таблицы categories, WHERE id = полю cat в таблице portfolio AND parent_id (в таблице portfolio) = 0
6. peters - 06 Мая, 2014 - 17:07:41 - перейти к сообщению
ответ на 1-й пункт - Ваш же запрос из первого поста
ответ на 2-й пункт - запрос из 2-го поста

либо, Вы не можете нормально объяснить, что нужно. Тогда приведите пример.

 

Powered by ExBB FM 1.0 RC1