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

Помогите по MySQL


SLASH_id

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

Имеем.

Таблица clients.

Структура:

 

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

 

 

 

Требуется:

 

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

 

 

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

  • 6 месяцев спустя...

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

 

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

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 месяц спустя...

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

Теперь немного 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 недели спустя...

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

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

 

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

 

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

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 строку...

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

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

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

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



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

    • SMyDer
      Автор SMyDer
      Здравствуйте. При запуске инженерного ПО вылетала ошибка (см. картинку).
      Короче говоря, все свелось к тому, что был запущен .bat файл из корневой папки ПО, который выдал в консоли сообщение:
      ****ASSERTION****: Unknown error occured iterating C:\Windows\Fonts\Mysql
      Прошерстил темы на форумах по данному вопросу, но везде понял, что подход индивидуальный. Помогите, пожалуйста. Вот мой лог.

      CollectionLog-2025.05.30-04.47.zip
    • Anton3456
      Автор Anton3456
      Здравия переустановил винду скачал только стим решил зарание проверить все ДОКТОРОМ ВЕБ .И в итоге нашел вирус  CHROMIUM:PAGE.MALWARE.URL. что делать подскажите пожалуйста .Таже история что и у других людей этот вирус просто не удаляется помогите исправить пожалуйста 

    • alexander6624
      Автор alexander6624
      при проверке вирусов на dr web нашёлся вирус net malware url, dr web его обезвредить не смог,а при следующей проверке вируса не было найдено,но на следующий день при повторной проверке этот вирус опять обнаружился,при этом начал очень сильно грется процессор и начались сильные глюки.

    • Чилипиздрик
      Автор Чилипиздрик
      Здравствуйте! Подцепила на просторах интернета указанный MEM:Trojan.Win32.SEPEH.gen Удалить с помощью не выходит KVRT. Он его видит предлагает вылечить или пропустить (варианта удалить нет). Дальше делает вид, что работает, а после перезагрузки компа все остается на своих местах. Подскажите, пожалуйста, что с ним делать.
      CollectionLog-2025.06.18-20.38.zip
    • darksimpson
      Автор darksimpson
      Добрый день.

      Помогите пожалуйста с определением зловреда и, возможно, с расшифровкой.

      Прикрепляю архив с логами FRST, двумя зашифрованными файлами и запиской.

      Спасибо!
      p4.zip
×
×
  • Создать...