Выборка из базы на основании результата выборки
Подскажите, необходимо выполнить выборку из определенной таблицы базы данных по уже имеющемуся значению этой же таблицы:
выполняю выборку из базы данных из одной таблицы вот так: $dbl = mysql_connect('база','логин','пароль'); mysql_select_db('база',$dbl); $query5 = mysql_query("SELECT option_value_ru, productID FROM `SC_product_options_values` ",$dbl); $result = mysql_fetch_array($query5); echo $result['productID']; выводится productID, теперь мне надо выполнить выборку из другой таблицы этой же базы, вывести значение price, по уже имеющемуся productID. Пробовал вот так: $query5 = mysql_query("SELECT price FROM `SC_products`",$dbl); $result = mysql_fetch_array($query5); echo $result['price']; оно выводит значение но не могу их синхронизировал, что бы вторая выборка производилась на основе значения 1 выборки????? |
SELECT
`SC_product_options_values`.`option_value_ru`, `SC_product_options_values`.`productID`, `SC_products`.`price` FROM `SC_product_options_values` LEEFT JOIN `SC_products` ON `SC_products`.`ID` = `SC_product_options_values`.`productID` Как то так. Только там где `SC_products`.`ID` - укажите правильное названия поля в котором хранится id. |
То есть вот так:
$query5 = mysql_query("SELECT `SC_product_options_values`.`option_value_ru`, `SC_product_options_values`.`productID`,`SC_products`.`price` FROM `SC_product_options_values` LEEFT JOIN `SC_products` ON `SC_products`.`ID` = `SC_product_options_values`.`productID`",$dbl); $result = mysql_fetch_array($query5); echo $result['price']; |
Чего та не получается
|
Цитата:
Первым делом какая ошибка у вас выскакивает (если таковая имеется). Во вторых упрощенный пример структуры двух таблиц было бы хорошо увидеть. И на всякий случай спрошу, не забыли про: Цитата:
|
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /poisk.php on line 15
т.е вот тут $result = mysql_fetch_array($query5); выскакивает вот такое Вот структура таблицы: таблица `SC_products` (`productID`, `categoryID`, `customers_rating`, `Price`, `in_stock`) таблица `SC_product_options_values` (`optionID`, `productID`, `option_type`, `option_show_times`, `variantID`, `option_value_ru`) |
Попробуйте перед $result = mysql_fetch_array($query5);
поставить: if (!$query5) { die('Неверный запрос: ' . mysql_error()); } Так как вполне возможно что ошибка в запросе самом |
Пишет Неверный запрос: Unknown column 'SC_products' in 'on clause'
|
Т.е еще раз я выбираю из таблицы `SC_product_options_values` значение option_value_ru, productID и получаю занчение productID.
Кстати выборка запускается через <form method="post" action="poisk.php"> <input type="text" name="option_value_ru"> <input type="submit" value="Отправить"> </form> получается productID - скажем 11111 Теперь мне надо вывести price из другой таблицы: `SC_products` для товара с productID из 1 выборки т.е с ID - 11111 |
Скорее всего, ошибка была в том что я опечатался. Там в запросе есть LEEFT . Одну букву Е надо убрать.
Кроме того не забудте поменять `SC_products`.`ID` на `SC_products`.`productID` Короче запрос должен быть таким: SELECT `SC_product_options_values`.`option_value_ru`, `SC_product_options_values`.`productID`, `SC_products`.`price` FROM `SC_product_options_values` LEFT JOIN `SC_products` ON `SC_products`.`productID` = `SC_product_options_values`.`productID` Цитата:
|
Цитата:
$query5 = mysql_query("SELECT price FROM `SC_products` WHERE `productID` = '".$result['productID']."'",$dbl); |
да я понял спасибо большое все сработало!
|
Ты загнал запрос в массив. Echo на массив работает некорректно.
Вот пример моего запроса (работает на сайте) $str_sql_query= mysql_query("Select * From t_users Where login='$sess_log'"); if(mysql_num_rows($str_sql_query)==0) { die ("Такого пользователя нет в базе!"); } else { $row=mysql_fetch_array ($str_sql_query); //создали массив пользователя $id=$row[id]; $name=$row[name]; $fam=$row[family]; $sex=$row[sex]; $email=$row[email]; } Затем выводишь переменные через echo с конкатенацией и все: echo $id.$name.$fam.$sex.$email; можно переменные не вводить а просто тупо забиваешь в echo значения массива: echo $row[id].$row[name].$row[family].$row[sex].$row[email]; если отбираешь несколько значений- считаешь сколько записей получилось, делаешь цикл по количеству записей и отображаешь что надо в теле цикла. ----------------------- А чтобы тебе добавить из другой таблицы цену- пользуйся SQL запросом со связыванием ключевых полей (это уж сам определи что и какой именно), в запросе указываешь Inner Join и поля для связки, только в запросе указываешь перед названием поля еще и имя таблицы. Напр: t_price.id, SC_products.price....ну и т.д... Затем как и описано выше только тоже дописываешь название таблицы: $id=$row[t_user.id]; Все |
Часовой пояс GMT +3, время: 07:21. |