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



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

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



Ошибка: Подзапрос возвращает более одной записи
...
Рейтинг: 0 / 0
23.03.2020, 13:14
    #39940243
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задать Приоритет переменной
Полную структуру исходной таблицы в форме CREATE TABLE, пример наполнения в форме INSERT INTO, значение $var и требуемый результат на таких данных - в студию.
...
Рейтинг: 0 / 0
23.03.2020, 14:36
    #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
23.03.2020, 15:02
    #39940274
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задать Приоритет переменной
Akina
структуру исходной таблицы в форме CREATE TABLE , пример наполнения в форме INSERT INTO
...
Рейтинг: 0 / 0
23.03.2020, 16:52
    #39940308
Vladislav90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задать Приоритет переменной
По предоставленным данным можете помочь?
Не могу я в данный момент предоставить то что вы просите, но понимаю что для составления запроса приведенных данных хватит (типы данных: varchar, int)
Я в долгу не останусь, хотел написать в ЛС - не нахожу как это сделать.
...
Рейтинг: 0 / 0
23.03.2020, 16:55
    #39940311
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задать Приоритет переменной
Вот то есть проблема у ВАС , а делать fiddle, чтобы создать запрос и убедиться, что результат верен, должен Я ?
...
Рейтинг: 0 / 0
23.03.2020, 16:58
    #39940312
Vladislav90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задать Приоритет переменной
Akina,

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

P.S. или я вас не правильно понял, и мне надо предоставить CREATE TABLE именно для таблицы из примера?
...
Рейтинг: 0 / 0
23.03.2020, 17:43
    #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
23.03.2020, 20:26
    #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
24.03.2020, 01:18
    #39940412
Vladislav90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задать Приоритет переменной
Akina,
Большое Спасибо, Работает.

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

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


Не могу я вас иначе найти
...
Рейтинг: 0 / 0
24.04.2020, 09:28
    #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
24.04.2020, 10:02
    #39950832
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задать Приоритет переменной
Vladislav90
как доработать данный Запрос
Забудьте эти слова. Любую задачу решайте от нуля.

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

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

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

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

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


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