Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Как сделать условие слияние таблиц, В чём суть Нужно чтоб при выходе получился массив с 1 таблич
lans8097  
 ۩  [x]    Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Даже не смотри сюда
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 197
Пользователь №: 30468
На форуме: 13 лет, 5 месяцев, 14 дней
Карма: 3




Доброго времени суток.
Та-куш вышло что я захотел сэкономить время на запросах к sql
Ситуация
Нужно вытащить все записи из таблички `blog`


CREATE TABLE IF NOT EXISTS `blog_comments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`post_id` int(11) NOT NULL,
`author_id` int(11) DEFAULT NULL,
`date` varchar(255) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`ip` varchar(255) DEFAULT NULL,
`message` text NOT NULL,
`action` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
)
ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;



CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`login` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`grup` int(11) NOT NULL,
`baned` int(11) NOT NULL DEFAULT '0',
`activation` int(1) NOT NULL DEFAULT '0',
`bot` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `users_profile` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`name` varchar(255) NOT NULL COMMENT 'Имя',
`surname` varchar(255) NOT NULL COMMENT 'Фамилия',
`age` int(11) NOT NULL DEFAULT '0' COMMENT 'Возраст',
`country` varchar(255) NOT NULL COMMENT 'Страна',
`city` varchar(255) NOT NULL COMMENT 'Город',
`isq` varchar(255) NOT NULL,
`skype` varchar(255) NOT NULL,
`vk` varchar(255) NOT NULL COMMENT 'Вконтакте',
PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


Если ячейка `blog`.`author_id`!==NULL
То нужно также подключить ещо две таблички `users` & `users_profile`

Примерно так

$sql = "
SELECT `blog`.*,
`users`.`email`,
`users_profile`.`name`
FROM `blog`
LEFT JOIN `users`ON(`users_id`=`blog`.`author_id`)
LEFT JOIN `users_profile` ON(`users_profile`.`user_id`=`users`.`id`)
WHERE `blog`.`blog_action`='1'
"
;
//Если где-то ошибся прошу извинения так как в sql много не знаю даи накидывал пример так сказать на коленке

В чём суть Нужно чтоб при выходе получился массив с 1 таблички если поле автор ид = NULL или-же c трёх табличек заменяя ячейки `blog`.`name` `blog`.`email`

Читал о IFNULL но так и не вкурил как его заюзать

подскажите наглядный пример пожалуйста[/sql][sql]
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
lans8097  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Даже не смотри сюда
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 197
Пользователь №: 30468
На форуме: 13 лет, 5 месяцев, 14 дней
Карма: 3




Ап.
Ну очень надо
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
vagrand  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2800
Пользователь №: 18145
На форуме: 15 лет, 10 месяцев, 6 дней
Карма: 91




а оператор if языка php тоже не вкурил как юзать?


--------------------
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
lans8097  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Даже не смотри сюда
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 197
Пользователь №: 30468
На форуме: 13 лет, 5 месяцев, 14 дней
Карма: 3




Цитата (vagrand @ 17.12.2012 - 09:58)
а оператор if языка php тоже не вкурил как юзать?

я хачу это впихнуть в 1 sql запрос так ак это будит цикл 50-100 каждый раз принимать проверять и повторно запрашивать как-то не красиво
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
lans8097  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Даже не смотри сюда
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 197
Пользователь №: 30468
На форуме: 13 лет, 5 месяцев, 14 дней
Карма: 3




Проблема решена

SELECT `mod_blog_comments`.*,
`users`.`email` AS prof_email,
`users_profile`.`name` AS prof_name
FROM `mod_blog_comments`
LEFT JOIN `users` ON(`mod_blog_comments`.`author_id` = `users`.`id`)
LEFT JOIN `users_profile` ON(`users`.`id` = `users_profile`.`user_id`)
WHERE
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса