powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Задать Приоритет переменной
20 сообщений из 20, страница 1 из 1
Задать Приоритет переменной
    #39940216
Vladislav90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как оформить SQL запрос такого вида:
Код: plsql
1.
2.
SELECT * FROM table
WHERE (price = $var OR  price = 100);



Если цена из $var имеется, то вывести её, иначе вывести товар с ценой 100

namepricename_idbooks100 5books505books355eraser1003eraser153eraser123pencil1007pencil307pencil507
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39940224
Vladislav90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladislav90
Если цена из $var имеется, то вывести её, иначе вывести товар с ценой 100
$var всегда меньше 100 ($var <100)
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39940226
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В левой копии отобрать заданное, в правой 100. И Coalesce().
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39940237
Vladislav90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если так:
Код: plsql
1.
2.
3.
SELECT * FROM `table` WHERE
(SELECT price MIN FROM `table`
WHERE (price= $var OR price =1001));



Ошибка: Подзапрос возвращает более одной записи
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39940243
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полную структуру исходной таблицы в форме CREATE TABLE, пример наполнения в форме INSERT INTO, значение $var и требуемый результат на таких данных - в студию.
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39940269
Vladislav90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините, сейчас нет доступа к таблице, но вот практически Копия (позиций намного больше, плюс есть дата и id, со смартфона не стал заполнять, они роли не играют в запросе)
Запись в таблицу осуществляется из PHPMyadmin
Можно сказать в ручную.
$var Всегда Меньше 100.


Задача вывести записи:
1. По одному продукту для каждого "name_id"
2. Имеющий Самый высокий "status"
3. И с Ценой "price" - Если найдена из $var , иначе тот который = 100

Таблица:
name price name_id statusbook 100 5 47book 30 5 49book 33 5 50book 33 5 49eraser 100 3 37eraser 30 3 34eraser 33 3 33eraser 33 3 45pencil 100 7 21pencil 25 7 37pencil 34 7 44

Если $var = 33, такой должен быть вывод:
name price name_id statusbook33550eraser33345pencil100721

Спасибо, код очень нужен.
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39940274
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
структуру исходной таблицы в форме CREATE TABLE , пример наполнения в форме INSERT INTO
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39940308
Vladislav90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По предоставленным данным можете помочь?
Не могу я в данный момент предоставить то что вы просите, но понимаю что для составления запроса приведенных данных хватит (типы данных: varchar, int)
Я в долгу не останусь, хотел написать в ЛС - не нахожу как это сделать.
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39940311
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот то есть проблема у ВАС , а делать fiddle, чтобы создать запрос и убедиться, что результат верен, должен Я ?
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39940312
Vladislav90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

По данной таблице вполне получиться проверить, если условие выполняется - ответ Решён.
Думаю договоримся.

P.S. или я вас не правильно понял, и мне надо предоставить CREATE TABLE именно для таблицы из примера?
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39940319
Vladislav90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если правильно вас понял, то:

Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE Products (
name varchar(255),
price int,
name_id int,
status int
)



Заполняем
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
INSERT INTO Products (name,price,name_id,status)
VALUES
("book",   100, 5, 47),
("book",   30,   5, 49),
("book",   33,   5, 50),
("book",   33,   5, 49),
("eraser", 100, 3, 37),
("eraser", 30,   3, 34),
("eraser", 33,   3, 33),
("eraser", 33,   3, 45),
("pencil",  100, 7, 21),
("pencil",  25,   7, 37),
("pencil",  34,   7, 44)
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39940374
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предполагая, что name_id и name представляют собой неразрывную пару, а при прочих равных следует выводить запись с максимальным status :

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
WITH cte AS (
SELECT name, price, name_id, status, 
       ROW_NUMBER() OVER (PARTITION BY name_id 
                          ORDER BY price != @var, price != 100, status DESC) rn
FROM Products
)
SELECT name, price, name_id, status
FROM cte
WHERE rn = 1;



fiddle .
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39940412
Vladislav90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
Большое Спасибо, Работает.

Как я могу с вами связаться?
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39940456
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladislav90
Как я могу с вами связаться?
akina на vingrad.ru
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39941443
Vladislav90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Напишите мне пожалуйста
Код: php
1.


Не могу я вас иначе найти
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39950818
Vladislav90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladislav90,
Подскажите пожалуйста, как доработать данный Запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
WITH cte AS (
SELECT name, price, name_id, status, 
       ROW_NUMBER() OVER (PARTITION BY name_id 
                          ORDER BY price != @var, price != 100, status DESC) rn
FROM Products
)
SELECT name, price, name_id, status
FROM cte
WHERE rn = 1;



что-бы дополнительно использовать переменную name , в которой будет указано Название продукта, для выборки и вывода всего Одной строки.
Vladislav90

Задача вывести записи:
1. По одному продукту для каждого "name_id"
2. Имеющий Самый высокий "status"
3. И с Ценой "price" - Если найдена из $var , иначе тот который = 10

4. Из всего списка вывести Только одну строку, где name = значению переменной name

P.S. Данные для таблицы:
Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE Products (
name varchar(255),
price int,
name_id int,
status int
)



Заполняем
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
INSERT INTO Products (name,price,name_id,status)
VALUES
("book",   100, 5, 47),
("book",   30,   5, 49),
("book",   33,   5, 50),
("book",   33,   5, 49),
("eraser", 100, 3, 37),
("eraser", 30,   3, 34),
("eraser", 33,   3, 33),
("eraser", 33,   3, 45),
("pencil",  100, 7, 21),
("pencil",  25,   7, 37),
("pencil",  34,   7, 44)
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39950832
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladislav90
как доработать данный Запрос
Забудьте эти слова. Любую задачу решайте от нуля.

Показывайте (пример значения параметра + требуемый результат) для 2-3 значений параметра.
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39950833
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladislav90
4. Из всего списка вывести Только одну строку, где name = значению переменной name

А если у отобранной по первым 3 пунктам записи другой name - не выводить? даже если имеется другая запись с тем же name_id и требуемым name?
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39951045
Vladislav90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

В переменной name 100% будет название, которое Есть в списке (в колонке name).

Если Точнее, то в эту переменную будет записываться одно из значений из колонки name.
...
Рейтинг: 0 / 0
Задать Приоритет переменной
    #39951211
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladislav90 , ну исходные Вы дали - дайте теперь
Akina
(пример значения параметра + требуемый результат) для 2-3 значений параметра

Типа "если $name = 'что-то' то результат нужен такой ... потому что ...".
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Задать Приоритет переменной
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]