[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: объеденить запросы
PiratXXX
Здрасте всем знатакам)
Такой вопрос простой я так понимаю, но прошу объяснить по доходчевей...

Суть, есть фотка запросом достаем из обной таблици инфу о фотке, и среди полученной инфы есть id альбома к которому эта фотка относиться, и нужно получить инфу об этом альбоме уже из другой таблици...

пример.

$PhotoCheck = mysql_fetch_array(mysql_query("SELECT * FROM `photos_list` WHERE `Id` = '".$PhotoId), MYSQL_ASSOC);
$AlbumInf = mysql_fetch_array(mysql_query("SELECT * FROM `albums_list` WHERE `Id` = '".$PhotoCheck['AlbumId']), MYSQL_ASSOC);


вопрос, можно ли эти запросы объеденить, и сильноли такие запросу перегружают сервер?

заранне спасибо!!!!!!



Спустя 6 минут, 10 секунд (17.08.2011 - 21:39) neadekvat написал(а):
SELECT t1.*, t2.*
FROM `photos_list` t1
LEFT JOIN `albums_list` t2 ON t1.AlbumId = t2.id
WHERE `id` = $PhotoId


Используй mysql_fetch_assoc, не придется использовать MYSQL_ASSOC.

Спустя 6 минут, 13 секунд (17.08.2011 - 21:45) Kusss написал(а):

SELECT albums_list.name , al.name2
FROM `photos_list`
LEFT JOIN `albums_list` AS al ON al.id = photos_list.id_albom
WHERE `photos_list.Id` = $PhotoId

Спустя 3 минуты, 35 секунд (17.08.2011 - 21:49) neadekvat написал(а):
Kusss, ключевое слово AS можно упускать, чтобы чище текст запроса выглядел.

Спустя 24 минуты, 49 секунд (17.08.2011 - 22:13) PiratXXX написал(а):
neadekvat

спасибо! а что такое t1 и t2?

Спустя 46 секунд (17.08.2011 - 22:14) neadekvat написал(а):
Цитата (PiratXXX @ 17.08.2011 - 23:13)
спасибо! а что такое t1 и t2?

Алиасы для таблиц, чтобы не приходилось постоянно писать их названия. Кому-то удобнее писать так, как написал Kusss, мне удобнее именно с алиасами.

Спустя 10 минут, 59 секунд (17.08.2011 - 22:25) PiratXXX написал(а):
вот составил ток ошибка
   $query = mysql_fetch_array(mysql_query("SELECT PhotoList, AlbumList FROM `cont_foto_photos_list` PhotoList LEFT JOIN `cont_foto_albums_list` AlbumList ON PhotoList.AlbumId = AlbumList.Id WHERE `Id` = 465"), MYSQL_ASSOC);


Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in

Спустя 1 минута, 45 секунд (17.08.2011 - 22:27) neadekvat написал(а):

Спустя 16 минут, 17 секунд (17.08.2011 - 22:43) PiratXXX написал(а):
Я понял что ошибка в синтаксисе...

Пож. опиши этот запрос рускими словами, я ж не ленивый я не прошу составлять за меня запрос..

Блин читаю но чет ни как не могу понять..

Спустя 3 минуты, 23 секунды (17.08.2011 - 22:47) neadekvat написал(а):
Так я уже его составил для тебя. Бери и пользуйся.

А коль ошибка - так надо ж текст ошибки увидеть.

Спустя 4 минуты, 12 секунд (17.08.2011 - 22:51) PiratXXX написал(а):
neadekvat
НУ ВОТ ЗАПРОС

"SELECT t1.*, t2.* FROM `cont_foto_photos_list` t1 LEFT JOIN `cont_foto_albums_list` t2 ON t1.AlbumId = t2.Id WHERE `Id` = 465"

вот ошибка

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\WebServer\www\flibro.com\account\index.php on line 21
Column 'Id' in where clause is ambiguous

Спустя 2 минуты, 21 секунда (17.08.2011 - 22:53) neadekvat написал(а):
Это значит, что в каждой таблице есть поле id, а ты его используешь для выбрки в WHERE. Надо указать, из какой именно таблицы ты хочешь брать значение.
К тому же, рекомендую подумать над полями, которые ты достаешь с помощью * - там тоже будут повторы.

Спустя 4 минуты, 2 секунды (17.08.2011 - 22:57) PiratXXX написал(а):
так а что в таких запросах, в разных таблицах должны быть поля с разными именами?

Спустя 1 минута, 6 секунд (17.08.2011 - 22:58) neadekvat написал(а):
Архитектуру бд надо делать, исходя из нормальных форм, а не из предполагаемых запросов.
Так что в таких запросах надо вместо * конкретно указывать нужные поля.

Спустя 2 минуты, 38 секунд (17.08.2011 - 23:01) PiratXXX написал(а):
neadekvat
ага. все понял все большое тебе спасибо, за наставления на путь истенный)))

сделал так

"SELECT t1.*, t2.* FROM `cont_foto_photos_list` t1 LEFT JOIN `cont_foto_albums_list` t2 ON t1.AlbumId = t2.Id WHERE t1.Id = 465"


будем разбираться!

Спустя 6 минут, 13 секунд (17.08.2011 - 23:07) Kusss написал(а):
Если у тебя есть одинаковые названия , то можно переименовать .
SELECT t1.id, t2.id AS t2_id FROM ...

на выходе будет $result['id'] и $result['t2_id']

Спустя 42 минуты, 16 секунд (17.08.2011 - 23:49) PiratXXX написал(а):
neadekvat

еще один вопросик, а можно таким же макаром связать select и update, (сначала достать а потом кое что подправить) и как это сделать? Еще раз спасибо!

Спустя 1 минута, 29 секунд (17.08.2011 - 23:51) neadekvat написал(а):
Кажется, можно сделать так:
UPDATE tbl SET col = (SELECT col FROM tbl LIMIT 1)


_____________
http://flibro.com/
Быстрый ответ:

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