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 :: Нормализированные базы и подзапросы

 PHP.SU

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


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

> Без описания
Anguis
Отправлено: 16 Июня, 2012 - 14:26:34
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


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




Здравствуйте! Ни как не могу разобраться - новичек в MYSQL
Вот есть две таблицы:
PAGES
id | name | category_id | etc..
1 | first | 2 | ....
1 | second | 1 | ....
1 | fird | 2 | ....

вторая
CATS
id|name
1|category_first
2|category_second
Нужен запрос что-бы вывело все из PAGES с лимитом и для каждой записи еще и CATS.name

т.е. так:

id | name | category_id | cat_name|etc
1 | first | 2 | category_second | ....
1 | second | 1 | category_first | ....
1 | fird | 2 | category_second | ....

понимаю что нужен подзапрос с псевданимом либо объединение но как сделать не могу додуматься..
 
 Top
caballero
Отправлено: 16 Июня, 2012 - 14:35:52
Post Id


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


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


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




обычный join или еще проще where pages.category.id= cat.id


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Anguis
Отправлено: 16 Июня, 2012 - 20:15:39
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


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




caballero пишет:
обычный join или еще проще where pages.category.id= cat.id

непонятно.
Читайте внимательнее первый пост
 
 Top
caballero
Отправлено: 16 Июня, 2012 - 21:12:02
Post Id


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


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


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




Цитата:
непонятно.
Читайте внимательнее первый пост

пиши внимательно, чтобы было понятно о чем речь.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Anguis
Отправлено: 16 Июня, 2012 - 21:19:38
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


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




caballero пишет:
пиши внимательно, чтобы было понятно о чем речь.

Мы с вами на брудершафт не пили. Так что давайте на Вы и с уважением.
Я указал:
Цитата:
понимаю что нужен подзапрос с псевданимом либо объединение но как сделать не могу додуматься..


Я только начал разбираться. составьте мне пожалуйста запрос этот, что-б я понял как правильно его делать.
 
 Top
caballero
Отправлено: 16 Июня, 2012 - 21:49:51
Post Id


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


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


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




если ты только начал разбиратся то как ты определил что пост был прочитан неправильно. И не надо наездов если хочешь получить ответ.

Цитата:
Я указал:

указал что неправильно понимаешь потому как подзапрос тут нафиг не нужен.

select pages.id as id,pages.name as pagename, cat.id as category_id,cat.name as category_name from pages join cat on pages.category.id= cat.id

или
select pages.id as id,pages.name as pagename, cat.id as category_id,cat.name as category_name from pages,cat where pages.category.id= cat.id

типа того - пишу навскидку

где ты хочешь лимит одному Б-гу ведомо.

Рекомендую кроме правил хорошего тона поучится писать вопросы технически понятным языком.
Не удивлюсь если написаное не соответствует реально существующей задаче


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Anguis
Отправлено: 16 Июня, 2012 - 22:09:54
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


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




ну как-бы реальной задачи нет. я изучаю нормализированные базы данных. Возник вопрос как одним запросом вытянуть все поля из одной таблицы + к каждой строке с полями из первой таблицы добавить некоторые поля из второй таблицы по заданному критерию. С лимитам без вас справлюсь, не в этом суть вопроса.

Следующий вопрос более сложный, в нем нам надо будет выбрать из первой таблицы+ к каждой строке добавить поля еще из двух других таблиц по заданному критерию. Что-бы один запрос сгружал в массивы всю необходимую информацию, без дополнительных запросов в цикле while($obj = PDO->fetch_object) или mysql_fetch_array. Но для начала надо разобраться с самым простым.

Вот пример:
Таблица "страницы"
айди\текст\айди пользователя\другая инфа

Таблица "пользователи"
айди\логин\аватара\год рождения.

Мне нужно вывести краткие анонсы страниц с логином аватарой и датой рождения пользователя.

Т.е. мне нужно что-бы к каждой строке из таблицы "страницы" добавлялись три поля из таблицы "пользователи", соответствующие заданному критерию, в данном случае айди пользователя
Что тут можно понять неправильно?

Я еще раз настойчиво прошу не "тыкать" мне. Я не маленький мальчик, в возрасте уж, не стоит из меня лоха делать только оттого что я ламер в некоторых вопросах. Все когда-то с чего-то начинали и были ламерами.

(Отредактировано автором: 16 Июня, 2012 - 22:24:05)

 
 Top
caballero
Отправлено: 16 Июня, 2012 - 22:41:51
Post Id


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


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


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




Цитата:
Следующий вопрос более сложный, в нем нам надо будет выбрать из первой таблицы+ к каждой строке добавить поля еще из двух других таблиц по заданному критерию.

тоже самое только добавить еще одну таблицу и связать условием where или в join c одной и первых. к примеру связываешь id пользователя из обоих таблиц
Дополнительные критерии дописываются в условие where. limit в конце.

есть куча мануалов с примерами например здесь
http://php.su/mysql/manual/?page=Multiple_tables

Цитата:
Я не маленький мальчик, в возрасте уж, не стоит из меня лоха делать только оттого что я ламер в некоторых вопросах.

я тоже не пацан и уверен что старше тебя - раслабся.
И лоха из тебя никто не делает.
Такой ранимый и в програмирование вместо играть там на скрипочке как остальные благовоспитаные выходцы из интелигентных семей. А преставь что завтра столкнешся с неделю нечесаным и небритым сисадмином. Плач

(Отредактировано автором: 16 Июня, 2012 - 22:45:45)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Anguis
Отправлено: 16 Июня, 2012 - 23:38:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


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




caballero пишет:
я тоже не пацан и уверен что старше тебя - раслабся.
И лоха из тебя никто не делает.
Такой ранимый и в програмирование вместо играть там на скрипочке как остальные благовоспитаные выходцы из интелигентных семей. А преставь что завтра столкнешся с неделю нечесаным и небритым сисадмином.

Вот это вопрос спорный, ибо я и есть неделю не чесаный бородатый сисадмин Ггггг)))
А что, культуру речи ты встречал тока у выходцев из ителлегентеных семей? А я вот знаю некоторых бомжей, которые общаются куда грамотней и интересней некоторых наших "образованных" личностей.
А сразу ссылку на ман этот не мог дать? Я гугли задолбался лопатить, даже незнаю как вопрос правильно сформулировать, все про join и Union выдает. Еше коррелированные подзапросы видел, в общем все кроме нужного.
(Добавление)
Все. Все сразу стало на места. И ни каких подзапросов и юнионов.
В моем случае запрос будет такого плана
SELECT table1.*,table2.name AS catname FROM table1, table2 WHERE (какие-то условия для выборки из первой таблы) AND table2.id = table1.category_id LIMIT $n,20;

Все куда проще, как оказалось)
 
 Top
caballero
Отправлено: 16 Июня, 2012 - 23:52:26
Post Id


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


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


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




Цитата:
А сразу ссылку на ман этот не мог дать?

Извините пожалуста. Был неправ. Пойду убьюсь апстену


Цитата:
все про join и Union выдает

верно выдает - данные бывают посложнее трех плоских таблиц
Цитата:
Все куда проще, как оказалось)

только алиасы на имена полей не забывать а то все поля id, name

Цитата:
ибо я и есть неделю не чесаный бородатый сисадмин

админ не умеющий набрать в гугле "sql выборка из нескольких таблиц" ?
даже не знаю кто я тогда

(Отредактировано автором: 16 Июня, 2012 - 23:54:32)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB