Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB59.0510
BTC/USD0.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 17.12.2009, 14:56   #1
Cude
роллер-дорвейщик
 
Аватар для Cude
 
Регистрация: 08.04.2007
Сообщений: 636
Бабло: $112580
Отправить сообщение для Cude с помощью ICQ
По умолчанию Вопросы по sql

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

Запрос должен быть один
__________________
Cude вне форума  
Старый 17.12.2009, 15:35   #2
ar4ibas
Senior Member
 
Регистрация: 11.11.2009
Сообщений: 362
Бабло: $71310
По умолчанию

прикольно.

а можна получить SHOW CREATE TABLE для каждой из таблиц и сам запрос?

я так понимаю вы используете INNER JOIN а нужен LEFT
ar4ibas вне форума  
Старый 17.12.2009, 16:08   #3
deschain
Senior Member
 
Аватар для deschain
 
Регистрация: 01.11.2007
Сообщений: 2,275
Бабло: $288535
По умолчанию

Да, тебе LEFT JOIN нужен
deschain вне форума  
Старый 17.12.2009, 16:19   #4
Cude
роллер-дорвейщик
 
Аватар для Cude
 
Регистрация: 08.04.2007
Сообщений: 636
Бабло: $112580
ТС -->
Отправить сообщение для Cude с помощью ICQ
автор темы ТС По умолчанию

Честно говоря я просто пишу WHERE t1.id = t2.id и никогда не понимал пользы от JOIN. А какая еще есть польза от объединения таблиц через JOIN кроме моей ситуации?
__________________
Cude вне форума  
Старый 17.12.2009, 16:28   #5
deschain
Senior Member
 
Аватар для deschain
 
Регистрация: 01.11.2007
Сообщений: 2,275
Бабло: $288535
По умолчанию

В твоей ситуации, через LEFT JOIN, ты сможешь получить и те значения из первой таблицы, которых нет во второй.
deschain вне форума  
Старый 17.12.2009, 16:30   #6
imgreen
Lion King
 
Аватар для imgreen
 
Регистрация: 15.11.2008
Сообщений: 12,090
Бабло: $247698096
По умолчанию

А правда, в чем отличие INNER JOIN от способа с WHERE?
__________________
ДетскиеДомики.ру - забота о детях с особыми нуждами.
imgreen на форуме  
Старый 17.12.2009, 16:42   #7
ar4ibas
Senior Member
 
Регистрация: 11.11.2009
Сообщений: 362
Бабло: $71310
По умолчанию

JOIN выгодно отличается от WHERE тем что код получается более читабельный и наглядный. Реально когда джоинить десятки таблиц и с разными кондишнами, регекспами, разными функциями то сразу видна разница. Этол просто более гибко. Представь как бы этот запрос выглядел в твоей нотации:

INSERT INTO my_icecat_product_feature SELECT _icf.feature_id, _icf.category_feature_group_id, _icf.no, _icfg.no, CONCAT_WS(' ',_ipf.value, _im.default_sign )
FROM icecat_product_feature _ipf
INNER JOIN icecat_category_feature _icf ON _ipf.category_feature_id=_icf.category_feature_id AND _ipf.product_id=iproduct_id
INNER JOIN icecat_category_feature_group _icfg ON _icf.category_feature_group_id=_icfg.category_feat ure_group_id
LEFT JOIN icecat_measure _im ON _icf.measure_id=_im.measure_id AND _ipf.value REGEXP "[^a-zA-Z]+$";
ar4ibas вне форума  
Старый 17.12.2009, 16:55   #8
zlaya ssuka
ChefJavaProgrammierer
 
Аватар для zlaya ssuka
 
Регистрация: 05.04.2007
Сообщений: 1,166
Бабло: $15090
Отправить сообщение для zlaya ssuka с помощью ICQ
По умолчанию

для скл-я - ничем. он даже сабселекты в условия преобразует. для тебя, если ты через полгода будешь смотреть в свой код - улучшает читаемость.
zlaya ssuka вне форума  
Старый 17.12.2009, 17:39   #9
Cude
роллер-дорвейщик
 
Аватар для Cude
 
Регистрация: 08.04.2007
Сообщений: 636
Бабло: $112580
ТС -->
Отправить сообщение для Cude с помощью ICQ
автор темы ТС По умолчанию

А вот еще вопросик.
В чем смысл составных индексов? Они реально ускоряют выборку?
__________________
Cude вне форума  
Старый 17.12.2009, 17:50   #10
deschain
Senior Member
 
Аватар для deschain
 
Регистрация: 01.11.2007
Сообщений: 2,275
Бабло: $288535
По умолчанию

Реально ускоряют, если созданы правильно
deschain вне форума  
Закрытая тема



Опции темы
Опции просмотра