Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Вывод значений столбца, которые не равны значениям другого столбца

Необходимо вывести строки табл.1 со столбцами "А","Б","В" с условием, что значения столбца "В" не равны значениям столбца "Г" из табл.2. Если написать условие where "В" <> "Г", то выдает все возможные варианты (сравнивая первое значение одного столбца со всеми поочередно из другого). Нужно исключить значения "Г" из "В". Данные одного типа.
Ответ:
Код T-SQL
1
2
3
4
5
6
select
 t1.А, t1.Б, t1.В
from
 Табл1 t1
where
 not exists(select * from Табл2 where Г = t1.В);
Вопрос: Работа с циклами при вводе и выводе значений из базы данных

Всем доброго времени суток! У меня появилось несолько вопросов по поводу работы с mysql. Попрошу ногами сильно не пинать, так как новичок в работе с базами данных...

У меня есть база данных в которой есть таблица tovar (к примеру). В ней есть много строк. У этой таблицы так же есть 3 столбца: "name, price, how". В этой таблице name-text, price,how-integer


Итак, у меня появилось 2 вопроса...
Вопрос 1:
По поводу вывода значений из базы данных.

С общими принципами разобрался, подключил базу данных, и потом запросом вывожу данные в массив вот так:

$kartofel = mysql_query("SELECT * FROM tovar WHERE name = 'kartofel '");
$pomidor = mysql_query("SELECT * FROM tovar WHERE name = 'pomidor '");
....


Код PHP
1
2
$kartofel_row = mysql_fetch_array($kartofel);
    $pomidor_row = mysql_fetch_array($pomidor);
потом в нужном месте на странице вставляю значения вот так:

Код PHP
1
2
<?php echo $kartofel_row[price];?>
    <?php echo $kartofel_row[how];?>
А теперь собственно вопрос....как можно это все автоматизировать, в цикле например? что б не писать кучу таких строк (выделил желтым цветом)

Вопрос 2:
По поводу ввода значений в базу.

тут в принципе суть та же, есть поле для ввода данных (куда ж без него), что то вроде:
Код HTML5
1
<input name="kartofel_price" type="text" >
С помощью формы обработчика заношу в переменную значение введенное в поле. И отправляю его базу. Но так, как значения постоянно надо будет обновлять, делаю не новую записить,а перезапись старой

Код PHP
1
2
$insert_sql = "UPDATE import SET price='{$kartofel_price}' WHERE name='kartofel'";
    mysql_query($insert_sql) or die ('ошибка при обновлении значения!') ;
Ну, и опять же собственно вопрос...таких значений на одной странице будет очень много, как это дело автоматизировать, что б отправить все значения одним запросом?

За меня все делать не надо, должен сам вьехать как это работает но если не сложно подкиньте небольшой пример работы. Буду очень благодарен!
Ответ:
Сообщение от Raizel
Код PHP
1
2
$kartofel = mysql_query("SELECT * FROM tovar WHERE name = 'kartofel '");
$pomidor = mysql_query("SELECT * FROM tovar WHERE name = 'pomidor '");
Код MySQL
1
SELECT * FROM `tovar` WHERE `name` in( 'kartofel' , 'pomidor' );
Сообщение от Raizel
Ну, и опять же собственно вопрос...таких значений на одной странице будет очень много, как это дело автоматизировать, что б отправить все значения одним запросом?
Циклом например
Код HTML5
1
<input name="kartofel_price" type="text" >
Код HTML5
1
<input name="price[kartofel]" type="text" >
Код PHP
1
2
foreach( $_POST['price'] as $category => $price ) {
...
Вопрос: Вывод множества значений одним столбцом

Добрый день!
Никак не получается решить следующую задачку: есть параметр P1 в котором передаётся множество текстовых значений (либо NULL), нужно вывести значения этого параметра в один столбец.
Пытался с dual как-то это сделать, но не получается.
Поиском пользовался, но находит только вывод значений столбца в строку.
Помогите пожалуйста, наверняка ведь простое решение должно быть.
Ответ: chikaginsk,

Друг, я правильно понимаю, что постановка задачи следующая:
У тебя есть строковый параметр типа varchar2, в этой строке содержатся некие значения через разделитель (запятую). Требуется написать запрос, который выведет эти значения в виде отдельных строк.

Это делается через иерархический запрос с использованием регулярных выражений, пример по первой ссылке в гугле:
AnSi_Sr
chikaginsk,

Вопрос: Запрос с условиями по выводу значений

Всем доброе утро. Что-то не соображу, что не так......
Есть запрос select * from table where ....
Значения в таблицах разного формата, поэтому применил функцию - convert(float,replace(А_сумма,',','.')).

Необходимо:
Если значения столбца А_сумма и столбца B_сумма равны между собой, то строку вывести, но поля оставить пустыми.
Если значения столбца А_сумма и столбца B_сумма не равны, то оставить значения столбцов.

Написал функцию IIF ( convert(float,replace(А_сумма,',','.'))=B_сумма,'',convert(float,replace(А_сумма,',','.')))

выводит ошибку, что '=' стоит не в том месте. Потом функции IIF нужно 3 аргумента и т.д.


Подскажите, может быть есть другой вариант выполнения запроса?
Заранее большое СПАСИБО!!!
Ответ:
T-SQL
1
2
3
4
5
6
select 
 case when a.А_сумма <> t.B_сумма then t.А_сумма end as А_сумма,
 case when a.А_сумма <> t.B_сумма then t.B_сумма end as B_сумма
from         
 Табдлица t cross apply
 (select try_convert(float, replace(t.А_сумма, ',', '.'))) a(А_сумма)
Вопрос: Из значения столбца сделать названия столбцов

Добрый день!
Подскажите пожалуйста, как можно вытащить значения столбца и из них сделать названия столбцов? Постараюсь объяснить на пальцах..
То что есть:

ID FIELD_NAME FIELD_VALUE
1 Имя Тест
1 Страна Россия
1 Город Москва
2 Имя Тест2
2 Страна Украина
...
P.S. Для одного ID может быть разное кол-о строк

То что надо:

ID Имя Страна Город
1 Тест Россия Москва
2 Тест2 Украина null
...
Спасибо.
Ответ: Добрый Э - Эх,

Спасибо, пойду бороздить по просторам гугла
Вопрос: Как сложить или вычесть значения из разных таблиц в Access 2010? А конкретно значения столбцов

Как сложить или вычесть значения из разных таблиц в Access 2010? А конкретно значения столбцов
Ну и любое другое действие.
Ответ:
Сообщение от Nikon3
Необходимо реализовать данную функцию:
"Определить, сколько денег по видам пластиковых карт расходовали клиенты в последний месяц."
В той структуре, которая в Вашей БД решить задачу невозможно. В таблице расходов нет даты! Ввел дату операции в т. "Расход денежных средств", заполнил ее от фонаря. Если считать, что "последний" месяц это текущий, то запрос такой
SQL
1
2
3
4
5
6
SELECT Карты.[Код карты], Карты.[Тип карты], SUM([Расход денежных средств].[Кол-во снятых со счета средств]) AS [Сумма расходов] 
FROM ([Расход денежных средств] INNER JOIN Клиенты 
ON [Расход денежных средств].[ФИО Клиента] = Клиенты.[Код клиента]) INNER JOIN Карты 
ON Клиенты.[Тип карты] = Карты.[Код карты]
WHERE MONTH([Расход денежных средств].ДатаОперации)=MONTH(DATE())
GROUP BY Карты.[Код карты], Карты.[Тип карты], Карты.[Тип карты]
Смотрите во вложении запрос "РасходыПоследнегоМесяца"
Вопрос: Как сравнивать значения столбцов

Нужно чтобы значение в столбце дата_тр было больше значения в столбце дата_пр. "<Date() And >[дата_пр]" выдает ошибку. Как тогда это сделать?
Ответ:
Сообщение от Керра
ltv_1953, а как сравнивать значения со значениями из других таблиц?
Действительно, гораздо проще сделать это в форме (обычно автомобиль выбирается в поле со списком, со столбцами код, обозначение, добавляют третий - текущую цену и сравнивают с ним). Можно сделать это и в таблице (макросы данных - упрощенные триггеры позволяют это сделать, но громоздко будет).
Вопрос: Перемножение значений столбцов и сложение построчно

Всем привет!
Есть таблица, состоит из 2ух int столбцов (в первом столбце номинал монеты-купюры и во втором количество этих монет купюр). Необходимо в процедуре построчно умножить значение первого столбца на второй и сложить все эти значения и присвоить результат переменной. Как бы получить полную сумму всех денег в таблице. Я придумал только задать произведение в каждой строке и присвоить эти значения переменным, а потом сложить эти переменные(учитывая что строчек всего 5). Но это как то рукожопо) Как это попроще и пограмотнее это сделать?
Ответ:
alexeyvg
ka4agar
Я придумал только задать произведение в каждой строке и присвоить эти значения переменным, а потом сложить эти переменные(учитывая что строчек всего 5). Но это как то рукожопо)
А вы вообще запросы писали, хоть какие то? :-)

SELECT @переменная = SUM(X*Y)
FROM таблица


Блин, спасибо как я и думал все очень просто) Чет я уже поплавился просто)
Вопрос: Применение хранимой процедуры ко всем значениям столбца

Всем здравствуйте!

Проблема такая:
Есть хранимая процедура, которой передается значение ID (int), она с ним работает, обновляет некоторые данные в разных таблицах, но сама ничего не возвращает. Есть таблица со столбцом значений подобных ID, к которым надо применить данную процедуру.
Читала, что можно через функции сделать вызов процедуры, но тогда процедуру нужно делать расширенной, чего бы не хотелось.. Как можно еще исхитриться?

Мне достаточно просто идей, ибо сама недавно начала изучать SQL и вообще работать с базами - мало что пока знаю о методах работы.

Заранее огромное спасибо! Очень надеюсь на вашу помощь.
Ответ:
Сообщение от pelgray
Но не эффективным способом.. Создала еще одну процедуру, в цикле отбирающую по одному элементу из столбца.
Ты же именно это и хотела: не изменяя саму процедуру вызвать её многократно.

Чтобы сделать более эффективно, нужно видеть её саму. Если и там без цикла не обойтись, то эффективность не увеличить. Если все, что там делается можно сделать групповым запросом, то можно немного модифицировать тот запрос так, чтобы при NULL-евом значении входного Id-а процедура обрабатывала все необходимые записи (например те, что "в ожидании"), а при конкретном определенном ID-е лишь одну эту)
Вопрос: DISTINCT по одному полю с выводом значений по остальным

Подскажите пожалуйста как сделать DISTINCT по одному полю c максимальной датой чтобы при этом также выводились значения остальных полей. Вот этот вариант выводит только уникальные значения поля ip а все остальные поля (date и id) остаются пустыми. Функция GROUP BY работает крайне медленно и не совсем корректно а также загружает сервер так что он просто зависает на какое-то время.

PHP
1
$db = @mysql_query("SELECT DISTINCT ip FROM " . $CONFIG['database_table_prefix'] . "uservisit ORDER BY date DESC LIMIT $from,$limit");
Ответ: К сожалению я не понимаю как применить эту информацию к моему случаю наверное ввиду того что не являюсь программистом.
Я ничего не смог найти в интернете, вот этот вариант используемый в другой CMS работает очень быстро и полностью корректно, я вижу что в нем используется distinct, но как использовать это к моей ситуации я не понимаю так как синтаксис изначально другой. Вы можете подсказать что нужно добавить в мой sql запрос что-бы получить тот же результат ?
PHP
1
2
3
4
5
6
7
8
9
10
11
function actionVisitorStatistics() {
        $dbC = Yii::app()->db->createCommand();
        $dbC->distinct = true;
        $dbC->select('id, ip as ' . Terms::IP . ',count(ip) as ' . Terms::COUNT . ',Max(date) ' . Terms::LAST_VISITED);
        $dbC->from('uservisit');
        $dbC->order('MAX( date ) DESC');
        $dbC->group('ip');
        $results = $dbC->queryAll();
 
        $this->render('visitorStatistics', array('data' => new CArrayDataProvider($results)));
    }
Добавлено через 21 минуту
Вот этот вариант работает но очень медленно и выводит также несколько одинаковых значений с ip и датой если они присутствуют в таблице.

MySQL
1
$db = @mysql_query("SELECT * FROM  " . $CONFIG['database_table_prefix'] . "uservisit WHERE (ip, date) IN (SELECT ip, MAX(date) FROM uservisit GROUP BY ip) ORDER BY date DESC LIMIT $from,$limit");
Мне всего лишь нужно что-бы при использовании функции DISTINCT помимо вывода уникальных значений IP c максимальной датой выводились и остальные поля, кто знает синтаксис sql пожалуйста подскажите как это сделать ?