[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сложный запрос в БД
DZHETIGAPA
Подскажите пожалуйста, как организовать запрос в след базу данных.

Есть две таблицы. Первая таблица: id, name, last_name
Вторая таблица: id, photo1, photo2.

Мне нужно выбрать из первой таблицы id и по этмоу id выбрать поля photo1, photo2 из второй таблицы.

В сложных запросах в БД я не силен, вот хочу научиться.

Подскажите пожалуйста



Спустя 9 минут, 44 секунды (30.06.2011 - 19:49) alex12060 написал(а):

SELECT table2.photo1, table2.photo2, table1.id AS id_1, table2.id AS id_2
LEFT JOIN `table2` ON table1.id = table2


Вот так вроде.

Спустя 42 минуты, 39 секунд (30.06.2011 - 20:31) DZHETIGAPA написал(а):
А если так:

'SELECT t1.*, t3.photo1, t3.photo2 FROM table1 t1 LEFT JOIN table2 t3

Так не подойдет?

Спустя 4 минуты, 24 секунды (30.06.2011 - 20:36) alex12060 написал(а):
DZHETIGAPA

Я откуда Пушкин? Проверь)

Спустя 2 минуты, 59 секунд (30.06.2011 - 20:39) Winston написал(а):
Меня улыбают люди которые вместо того чтобы сразу проверить, задают вопрос и ждут минуты пока кто-то ответит smile.gif

Спустя 1 час, 42 минуты, 42 секунды (30.06.2011 - 22:21) DZHETIGAPA написал(а):
Если бы моя проверка заключалась в тупом делании запроса, то проблем бы не было:)

Это корректирую модуль одной админки и причина ошибки была непонятна, так как там кроме запросов еще куча всего корректировал. Поэтмоу сюда и пришел, чтобы уточнить.

Щас уже разобрался, запрос изначально был правильный. Ошибка была в другом.

Спустя 16 часов, 52 минуты, 36 секунд (1.07.2011 - 15:14) DZHETIGAPA написал(а):
Помогите еще пожалуйста с запросом. А то уже не знаю, что и придумать.

Есть три таблицы вида:

Первая: customerID, itemID, Quantity
Вторая: itemID, productID
Третья: itemID, variantID

И так, что мне нужно сделать. Мне нужно определить itemID для конкретного запроса и удалить все строки из таблиц, где есть itemID равный найденнмоу
Вот моя логика:

$getID = $_GET['id'];
$getProduct = $_GET['productID'];

//////////////Нахожу itemID для запроса

$sql=mysql_query("SELECT table2.itemID FROM table2
LEFT JOIN table1 ON table2.itemID = table1.itemID
WHERE table2.productID='
$getProduct' AND table1.customerID='2'");

$r=db_fetch_assoc($sql);
$itemID = $r['itemID'];

//Теперь удаляю

mysql_query("DELETE table1.*, table2.*, table3.* FROM table1, table2, table3
WHERE table1.customerID='2' AND table1.itemID='
$itemID' AND table2.itemID='$itemID' AND table3.itemID='$itemID'");


Уже часа 2 мучаюсь и не могу понять, почему не удаляются нужный даныне в нужных таблицах.

Подскажите, гед мой косяк. Заранее благодарен.

Спустя 22 минуты, 58 секунд (1.07.2011 - 15:37) DZHETIGAPA написал(а):
Ошибка явно где-то тут

$sql=mysql_query("SELECT table2.itemID FROM table2
LEFT JOIN table1 ON table2.itemID = table1.itemID
WHERE table2.productID='
$getProduct' AND table1.customerID='2'");

$r=db_fetch_assoc($sql);
$itemID = $r['itemID'];





Спустя 9 минут, 42 секунды (1.07.2011 - 15:47) Winston написал(а):
Попробуй заменить такую подставку переменных
Цитата (DZHETIGAPA @ 1.07.2011 - 15:14)
productID='$getProduct'

На
productID='".$getProduct."' 

Спустя 11 минут, 30 секунд (1.07.2011 - 15:58) DZHETIGAPA написал(а):
Попробую, но думаю, что дело не в этом. Ведь везде такая строка работает:

productID='$getProduct'

Спустя 2 минуты, 24 секунды (1.07.2011 - 16:01) DZHETIGAPA написал(а):
Проверил. Никаких изменений

Спустя 1 минута, 1 секунда (1.07.2011 - 16:02) kristall написал(а):
Цитата (PHPprogramer @ 1.07.2011 - 16:47)
Попробуй заменить такую подставку переменных
Цитата (DZHETIGAPA @ 1.07.2011 - 15:14)
productID='$getProduct'

На
productID='".$getProduct."' 

Проще переменную в фигурные скобки брать, меньше шансов запутаться в точках и кавычках:

"WHERE table2.productID='{$getProduct}' AND table1.customerID='2'");


Но сдесь дело не в синтаксисе, обычно такие проблемы лишь при вставке элементов ассоциативных массивов вылезают.

Сделай print_r($r), посмотри, что первый запрос выбирает.


Спустя 6 минут, 5 секунд (1.07.2011 - 16:08) DZHETIGAPA написал(а):
Ничего не выводит. Пустота.

Спустя 2 минуты, 59 секунд (1.07.2011 - 16:11) DZHETIGAPA написал(а):
Скорее всего понял, в чем моя ошибка. Спасибо за помощь!

Хотя нет... не понял.... не прокатило...

Спустя 6 минут, 32 секунды (1.07.2011 - 16:17) killer8080 написал(а):
DZHETIGAPA
между DELETE и FROM не нужно ничего писать
mysql_query("DELETE FROM table1, table2, table3
WHERE table1.customerID='2' AND table1.itemID='
$itemID' AND table2.itemID='$itemID' AND table3.itemID='$itemID'");

Спустя 3 минуты, 31 секунда (1.07.2011 - 16:21) DZHETIGAPA написал(а):
С DELETE как раз проблем нет - проверял. Вместо $itemID подставлял конкретные цифры - все работает.

Спустя 1 минута, 20 секунд (1.07.2011 - 16:22) killer8080 написал(а):
хотя пардон наверно нельзя так удалять сразу из трёх таблиц одним запросом, наверно правильно будет так
mysql_query("DELETE FROM `table1` WHERE `customerID`='2' AND `itemID`='$itemID' ");
mysql_query("DELETE FROM `table2` WHERE `itemID`='$itemID'");
mysql_query("DELETE FROM `table3` WHERE `itemID`='$itemID'");


Спустя 2 минуты, 59 секунд (1.07.2011 - 16:25) DZHETIGAPA написал(а):
Я думаю, что можно:)

Тут весь мой косяк где-то в самом верхенм запросе и переменной, которая обрабатывает этот запрос.

Спустя 4 минуты, 30 секунд (1.07.2011 - 16:29) perovo_mike написал(а):
Нужна помощь вольному художнику.. Я вообще-то человек русующий - книжки, фотошоп, иллюстратор, знаю HTML а вот с PHP руки не доходят. Сам поставил доску объявлений, неделю мучился, но поставил. А вот с мета тагами ничего не получается, я пробовал 1251 и другие таги засунул их все в одну дыру, все-равно показывает абракадабру вместо кириллицы.. Семен говорит это дело в настройке БД. Посмотрите, пожалуйста, может скажете, что делать
www.moscowmiami.com/classifieds/

Спустя 30 минут, 52 секунды (1.07.2011 - 17:00) DZHETIGAPA написал(а):
Сделал проверку

if($sql) print "ИСТИНА";
else print "ЛОЖЬ";



Выводит ЛОЖЬ! И в чем тогда дело?

Спустя 26 минут, 20 секунд (1.07.2011 - 17:27) killer8080 написал(а):
Цитата (DZHETIGAPA @ 1.07.2011 - 17:00)
Выводит ЛОЖЬ! И в чем тогда дело?

ну вообще такого не должно быть, mysql_query возвращает false только если не удалось отправить запрос серверу БД.


какие то больно мудрёные запросы получаются, а если так попробовать?
$sql=mysql_query("SELECT `t2`.`itemID` FROM `table2` AS `t2`, `table1` AS `t1` 
WHERE `t2.itemID` = `t1`.`itemID` AND `t2`.`productID`='
$getProduct' AND `t1`.`customerID`='2'");


Спустя 1 час, 58 минут, 11 секунд (1.07.2011 - 19:25) DZHETIGAPA написал(а):
Короче. Решил проблемы. БЫло два косяка. Первй одан маленкьая синтаксичная ошибка и +mysql_fetch_array вместо db_fetch_assoc

Спустя 5 минут, 21 секунда (1.07.2011 - 19:30) DZHETIGAPA написал(а):
У меян вознки вопрос. Вот табличка: itemID, productID

Делаю простой запрос INSERT. Как сделать так, чтобы, если новый добавляемый productID равен одному из значений productID в таблице, то происходит просто обновленеи этой строки?

Я конечно могу нагородить кучу запросов и проверить. Но может как-нибудь проще можно?

Быстрый ответ:

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