Перейти к содержанию

Помогите по MySQL


SLASH_id

Рекомендуемые сообщения

Имеем.

Таблица clients.

Структура:

 

post-3402-0-81503100-1391888369_thumb.png

 

 

 

Требуется:

 

Для всех клиентов с city_id = 1090 изменить столбцы fio, company, phone, adress на <del>

 

 

Ссылка на комментарий
Поделиться на другие сайты

  • 6 months later...

Второй тур...

 

Итак есть запрос: 

SELECT O . * , O.nakladnaya AS  'number', O.status AS  'status', O.date_receive AS  'date', OA.who_get 'who', C_from.name AS  'from_city', C_to.name AS  'to_city', OA. * , OP. *
FROM (
orders O
JOIN orders_additional OA
JOIN orders_pay OP
)
LEFT JOIN orders_additional ON O.nakladnaya = OA.nakladnaya_id
LEFT JOIN  `clients` Cl_from ON Cl_from.client_id = O.sender_id
LEFT JOIN  `citys` C_from ON C_from.city_id = Cl_from.city_id
LEFT JOIN  `clients` Cl_to ON Cl_to.client_id = O.receiver_id
LEFT JOIN  `citys` C_to ON C_to.city_id = Cl_to.city_id
WHERE O.nakladnaya like TRIM('" . mysql_real_escape_string($_POST['nakl']) . "')
AND date_sent >= UNIX_TIMESTAMP(  '2012-01-01 00:00:00' )
AND OA.nakladnaya_id = O.nakladnaya
AND OP.nakladnaya_id = O.nakladnaya
LIMIT 1

Требуется:

 

Требуется в запрос впилить еще один Left Join из таблицы citys

Дабы в результате получить помимо того что и так запрашивается, еще и значение столбца time_dst где city_id таблицы citys равно to_city_id таблицы orders

 

Мой мозг не в силах превозмочь сие действие.

Помогите пожалуйста.


Доп инфо:

Структура orders:

post-3402-0-39003000-1409811814_thumb.png

 

Структура orders_additional:

post-3402-0-73057100-1409811866_thumb.png

 

Структура orders_pay:

post-3402-0-64969000-1409811938_thumb.png

 

Структура citys:

post-3402-0-43431900-1409811986_thumb.png

 

Изменено пользователем SLASH_id
Ссылка на комментарий
Поделиться на другие сайты

SELECT O . * , O.nakladnaya AS  'number', O.status AS  'status', O.date_receive AS  'date', OA.who_get 'who', C_from.name AS  'from_city', C_to.name AS  'to_city', OA. * , OP. *,

C_time_dst.time_dst AS 'time_dst'

FROM (
orders O
JOIN orders_additional OA
JOIN orders_pay OP
)
LEFT JOIN orders_additional ON O.nakladnaya = OA.nakladnaya_id
LEFT JOIN  `clients` Cl_from ON Cl_from.client_id = O.sender_id
LEFT JOIN  `citys` C_from ON C_from.city_id = Cl_from.city_id
LEFT JOIN  `clients` Cl_to ON Cl_to.client_id = O.receiver_id
LEFT JOIN  `citys` C_to ON C_to.city_id = Cl_to.city_id

LEFT JOIN  `citys` C_time_dst ON C_time_dst.city_id = O.to_city_id

WHERE O.nakladnaya like TRIM('" . mysql_real_escape_string($_POST['nakl']) . "')
AND date_sent >= UNIX_TIMESTAMP(  '2012-01-01 00:00:00' )
AND OA.nakladnaya_id = O.nakladnaya
AND OP.nakladnaya_id = O.nakladnaya
LIMIT 1

Писалось в блокноте.

Изменено пользователем Skarbovoy
  • Спасибо (+1) 2
  • Согласен 1
Ссылка на комментарий
Поделиться на другие сайты

  • 1 month later...

Продолжаем топик.

Теперь немного php

$sql_h = "UPDATE orders_additional set comment = CONCAT(comment, IF(comment='','','\\n'), '" . $_POST["nkl_new"] . "')
          WHERE nakladnaya_id = '" . $_POST["nkl"] . "'";

Кто скажет, каково будет значение comment?

Что означает CONCAT(comment, IF(comment='','','\\n') ??

Ссылка на комментарий
Поделиться на другие сайты

CONCAT - Возвращает строку, являющуюся результатом конкатенации аргументов. Др. словами - сложение строк.

IF - оператор условия. Если comment - пустая строка (значение), то вернет пустую строку, если нет - вернет разделитель строк (новая строка). Сделано, чтобы исключить переход на новую строку в пустых строках comment.

 

Итог: формируется строка из старого значения comment(аргумент 1), перехода на новую строку(аргумент 2) и значения поля nkl_new (аргумент 3). Если comment пустое, просто заносится значение из nkl_new.

  • Спасибо (+1) 1
  • Согласен 1
Ссылка на комментарий
Поделиться на другие сайты

Итак. Теперь вопрос по php+html

 

Имеем: 

 

Страничку с содержимым.

В конце странички:

<a href="javascript:void(0)" onclick="window.open('find_image.php?nakl={$vars.nakladnaya}', '', 'width=800,height=650,scrollbars=yes')">Скан-копия</a>

3af3f33eb7dc.jpg

 

По клику открывается popup и исполняется find_image.php с параметром nakl={$vars.nakladnaya}

Содержимое find_image.php:

 

<?php

session_start();

require("./system/config.php");

$smarty->template_dir = "./templates";
$smarty->compile_dir = "./templates_c";

$real_url = "/opt/arhiv-nakl/";

if($_GET[nakl])
{
	// поиск файла в каталоге по маске
	$command = "find $real_url -iname *" . str_replace("/", "-", $_GET[nakl]) . "*";
	
	$ph = popen( $command , "r" ) or die("error");
	
	while( !feof($ph) )
	{
	  $res[] = trim(fgets($ph, 1024));
	}
	
	pclose($ph);
	
	if($res)
	  foreach($res as $value)
		  if($value)
			  $res_ar[] = str_replace($real_url, "", $value);
	
	$smarty->assign("result", $res_ar);
}

$smarty->assign("nakl", $_GET[nakl]);

$smarty->display("find_image.tpl.html");

?>

 

 

Содержимое find_image.tpl.html:

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>+++++++++++</title>
<meta content="text/html; charset=windows-1251" http-equiv="Content-Type">
<link href="styles.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#ffffff">
{if $smarty.get.nakl}
<b><font size="3">Результаты поиска (<font color="blue">{$nakl}</font>):</font></b>
{if !$result}
  <font color="red" size="3"><b>нет данных</b></font>
 
{else}
  <ul>
  {section name=id loop=$result}
   <li><a href="?nakl={$smarty.get.nakl}&img={$result[id]}">{$result[id]|replace:"nakls/":""|replace:"/":" - "|replace:".jpg":""|replace:"original":"<font color=red>original</font>"}</a>
  {/section}
  </ul>
{/if}
{if $smarty.get.img}
<img src="./nakls/{$smarty.get.img}" alt="Накладная">
{/if}
{/if}
</BODY></HTML>

 

 

 

Требуется каким-либо образом сделать открытие сего окна с параметром не в новом окне по клику, а прямо сразу отображать на этой же странице ниже (в отдельном фрейме?)

 

Буду рад советам.

Изменено пользователем SLASH_id
Ссылка на комментарий
Поделиться на другие сайты

  • 2 weeks later...

Так. Предыдущий вопрос снимаю.

Много гемора.

 

Вопрос теперь такой.

 

Имеем кой какую проверку в коде:
 

if(($receiver['city_id'] == '1527') || ($sender['city_id'] == '1527') || ($sender['city_id'] == '5') || ($receiver['city_id'] == '5') || ($sender['city_id'] == '27') || ($receiver['city_id'] == '27') || ($sender['city_id'] == '28') || ($receiver['city_id'] == '28') || ($sender['city_id'] == '125') || ($receiver['city_id'] == '125') || ($sender['city_id'] == '240') || ($receiver['city_id'] == '240') || ($sender['city_id'] == '260') || ($receiver['city_id'] == '260') || ($sender['city_id'] == '282') || ($receiver['city_id'] == '282') || ($sender['city_id'] == '292') || ($receiver['city_id'] == '292') || ($sender['city_id'] == '326') || ($receiver['city_id'] == '326') || ($sender['city_id'] == '344') || ($receiver['city_id'] == '344') || ($sender['city_id'] == '373') || ($receiver['city_id'] == '373') || ($sender['city_id'] == '384') || ($receiver['city_id'] == '384') || ($sender['city_id'] == '457') || ($receiver['city_id'] == '457') || ($sender['city_id'] == '477') || ($receiver['city_id'] == '477') || ($sender['city_id'] == '480') || ($receiver['city_id'] == '480') || ($sender['city_id'] == '548') || ($receiver['city_id'] == '548') || ($sender['city_id'] == '605') || ($receiver['city_id'] == '605') || ($sender['city_id'] == '920') || ($receiver['city_id'] == '920') || ($sender['city_id'] == '973') || ($receiver['city_id'] == '973') || ($sender['city_id'] == '974') || ($receiver['city_id'] == '974') || ($sender['city_id'] == '1010') || ($receiver['city_id'] == '1010') || ($sender['city_id'] == '1104') || ($receiver['city_id'] == '1104') || ($sender['city_id'] == '1137') || ($receiver['city_id'] == '1137') || ($sender['city_id'] == '1143') || ($receiver['city_id'] == '1143') || ($sender['city_id'] == '1152') || ($receiver['city_id'] == '1152') || ($sender['city_id'] == '1155') || ($receiver['city_id'] == '1155') || ($sender['city_id'] == '1157') || ($receiver['city_id'] == '1157') || ($sender['city_id'] == '1158') || ($receiver['city_id'] == '1158') || ($sender['city_id'] == '1160') || ($receiver['city_id'] == '1160') || ($sender['city_id'] == '1162') || ($receiver['city_id'] == '1162') || ($sender['city_id'] == '1169') || ($receiver['city_id'] == '1169') || ($sender['city_id'] == '1217') || ($receiver['city_id'] == '1217') || ($sender['city_id'] == '1239') || ($receiver['city_id'] == '1239') || ($sender['city_id'] == '1325') || ($receiver['city_id'] == '1325') || ($sender['city_id'] == '1330') || ($receiver['city_id'] == '1330') || ($sender['city_id'] == '1331') || ($receiver['city_id'] == '1331') || ($sender['city_id'] == '1348') || ($receiver['city_id'] == '1348') || ($sender['city_id'] == '1372') || ($receiver['city_id'] == '1372') || ($sender['city_id'] == '1469') || ($receiver['city_id'] == '1469') || ($sender['city_id'] == '1510') || ($receiver['city_id'] == '1510') || ($sender['city_id'] == '1511') || ($receiver['city_id'] == '1511') || ($sender['city_id'] == '1512') || ($receiver['city_id'] == '1512') || ($sender['city_id'] == '1513') || ($receiver['city_id'] == '1513') || ($sender['city_id'] == '1514') || ($receiver['city_id'] == '1514') || ($sender['city_id'] == '1515') || ($receiver['city_id'] == '1515') || ($sender['city_id'] == '1516') || ($receiver['city_id'] == '1516') || ($sender['city_id'] == '1517') || ($receiver['city_id'] == '1517') || ($sender['city_id'] == '1518') || ($receiver['city_id'] == '1518') || ($sender['city_id'] == '1519') || ($receiver['city_id'] == '1519') || ($sender['city_id'] == '1520') || ($receiver['city_id'] == '1520') || ($sender['city_id'] == '1521') || ($receiver['city_id'] == '1521') || ($sender['city_id'] == '1522') || ($receiver['city_id'] == '1522') || ($sender['city_id'] == '1523') || ($receiver['city_id'] == '1523') || ($sender['city_id'] == '1524') || ($receiver['city_id'] == '1524') || ($sender['city_id'] == '1529') || ($receiver['city_id'] == '1529') || ($sender['city_id'] == '1530') || ($receiver['city_id'] == '1530') || ($sender['city_id'] == '1531') || ($receiver['city_id'] == '1531') || ($sender['city_id'] == '1532') || ($receiver['city_id'] == '1532') || ($sender['city_id'] == '1533') || ($receiver['city_id'] == '1533'))

Можно этот код как-то оптимизировать?

Ссылка на комментарий
Поделиться на другие сайты

SLASH_id, это вы тестовые задания выполняете или этот "кривокод" существует в реальности?

По скорости скорее не выиграете, а вот по удобству и читабельности... можно использовать функцию in_array()

 

Запихнем все нужные значения city_id в массив $arr_id. Например так:

$arr_id = array('1527', '5', '27', '28', '125', ...................);

А вот и новый if:

if(in_array($receiver['city_id'],$arr_id) || in_array($sender['city_id'],$arr_id))

 

  • Спасибо (+1) 1
  • Согласен 1
Ссылка на комментарий
Поделиться на другие сайты

Мало того что существует, так еще и успешно работает более 10 лет. (Писал не я)

 

Спасибо за массив. Завтра же применю.


@ACIK,

 

И еще.

 

Если выполнить запрос:

SELECT * 
FROM  `predstav_city` 
WHERE  `predstav_id` =27
OR  `predstav_id` =28
ORDER BY  `predstav_city`.`city_id` ASC 
LIMIT 0 , 30000 

Получим как раз нужный мне результат в поле city_id

post-3402-0-34531100-1415211786_thumb.png

 

Есть ли возможность автоматически формировать массив? 

Ссылка на комментарий
Поделиться на другие сайты

Конечно, да. :)

 

Так обычно и выполняется подобная задача.


Функции mysql_fetch_array() или mysql_fetch_row()

А в запросе можно, например, оставить только city_id, если predstav_id в дальнейшем не задействована (используется только в отборе).
Ссылка на комментарий
Поделиться на другие сайты

@ACIK, Покурил по mysql_fetch_array...

 

Так?

$result = mysql_query("SELECT city_id FROM  `predstav_city` WHERE  `predstav_id` =27 OR  `predstav_id` =28 ORDER BY  `predstav_city`.`city_id` ASC");
   $arr_id = mysql_fetch_array($result, MYSQL_NUM) 
Ссылка на комментарий
Поделиться на другие сайты

P.S. Если заботитесь о свободной памяти, то можно еще в конце вызвать mysql_free_result().

Так?

Так выведет только 1 строку...

Тут нужен цикл.

Ссылка на комментарий
Поделиться на другие сайты

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Похожий контент

    • Alex161
      От Alex161
      Что ж, скачал игру, поймал постоянную работу вентилятора и нагрузку, удалял, лечил, что только не делал все бестолку, после перезагрузки снова появляется...мучаюсь вторые сутки, умоляю, помогите
      avz_log.txt
    • lion6705
      От lion6705
      Столкнулся с проблемой в виде замедления работы пк и замедление работы интернета так же иногда пк выключался в любой момент для решения проблемы решил использовать dr.web curelt появился файл с отметкой dialer.exe и надписью угроза NET:MALWARE.URL если бы он сразу удалился не начал искать способы убрать его в ручную но спустя 2 повторных проверки один и тот же исход а именно при устранение угрозы произошла ошибка
      Полез искать решение на ютубе и нашёл советовали использовать frst для того чтобы избавиться от любого вируса и вроде бы всё сделал но появилась новая проблема когда я попытался нажать исправить мне написалась что файла fixlist нету хотя я вроде бы (возможно не так) поэтому я пишу это сообщение чтобы узнать верно ли я всё сделал и те ли файлы пометил чтобы исправить их и избавиться от вируса 




      fixlist.txt.txt
      Addition_05-01-2025 20.19.18.txtFRST_05-01-2025 20.14.51.txt
       
       
      fixlist.txt.txt
    • Zakhar62668
      От Zakhar62668
      Виндоус дефендер находит постоянно трояны, но удалить не может, также пытался установить разные антивирусы, но все они не запускаются, вылетают ошибки, а также в исключениях есть файлы, которые не удаляются. Сейчас, посмотрев форум, запустил компьютер в безопасном режиме и через флешку установил фарбар рекавери скан тулс(чтоб запустить его пришлось удалить ограничения в редакторе реестра)
    • Эльнар
      От Эльнар
      Здравствуйте! Помогите пожалуйста удалить вирус, скорее всего майнер. Он постоянно нагружает процессор, даже на рабочем столе. Как только открываю диспетчер задач, обороты вентиляторов процессора падают до нормального. Как только выхожу из диспетчера задач сразу обороты вентиляторов растут. При открытии диспетчера задач я не успеваю увидеть какой процесс нагружает компьютер. Эта проблема началась когда я установил программу видеомонтажа Magix Vegas Pro не с официального сайта. Так же из проблем не получается зайти в конфигурацию системы (msconfig), окошко сразу закрывается. При запуске антивируса Malwarebytes, он тоже сразу закрывается. Когда зашёл в систему через безопасную загрузку msconfig также не открывается, но удалось запустить malwarebytes и drweb, они нашли вирусы, но проблема не ушла. Запустил Kaspersky Removal Tool, он долго сканировал и нашёл вирусы. Один из них располагался в папке куда был установлен Magix Vegas Pro. После удаления вирусов ситуация к сожалению не изменилась. Приложил отчёт сборщика логов.
      CollectionLog-2024.12.02-15.07.zip
    • Alex2088
      От Alex2088
      Здравствуйте помогите расшифровать файлы бызы 1с. Сылку для скачиваия файла прикриплю.
        https://dropmefiles.com/f0l5Y 
      Frank_Help.txt
       
      Сообщение от модератора kmscom тема перемещена из раздела Компьютерная помощь
×
×
  • Создать...