Такой вопрос простой я так понимаю, но прошу объяснить по доходчевей...
Суть, есть фотка запросом достаем из обной таблици инфу о фотке, и среди полученной инфы есть 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?
спасибо! а что такое 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 написал(а):
вот составил ток ошибка
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in
$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 написал(а):
http://phpforum.ru/index.php?showtopic=43337
вопросы 1,2
вопросы 1,2
Спустя 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
НУ ВОТ ЗАПРОС
вот ошибка
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
НУ ВОТ ЗАПРОС
"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 написал(а):
Если у тебя есть одинаковые названия , то можно переименовать .
на выходе будет $result['id'] и $result['t2_id']
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, (сначала достать а потом кое что подправить) и как это сделать? Еще раз спасибо!
еще один вопросик, а можно таким же макаром связать select и update, (сначала достать а потом кое что подправить) и как это сделать? Еще раз спасибо!
Спустя 1 минута, 29 секунд (17.08.2011 - 23:51) neadekvat написал(а):
Кажется, можно сделать так:
UPDATE tbl SET col = (SELECT col FROM tbl LIMIT 1)
_____________
http://flibro.com/