Имя:    Пароль:      Помнить меня       
Unsorted   ~  Software  ~  Development and Design  ~  Помощь по MySQL
На страницу «  1, 2, 3  »
Павлин
Сообщение  31 Июл 2009, 12:00  Ссылка : Ответить с цитатой
Возраст: 37 Пол: Мужской 
C нами с 08.05.2009
Репутация: 5.6

Ну хоть кто набудь помогите в гугле результатов нет ! Надо мне вывести 3 поля чтоб чередовались с точкой в отдельном поле.
Зарание спасибо и +1 от души

_____________________________
Прошу не тыкать в мануал его и так предостаточно!!!
В начало
Профиль : Личное Сообщение : Сайт : SkypeID : ICQ
NarWhal
Сообщение  31 Июл 2009, 12:17  Ссылка : Ответить с цитатой
Возраст: 45 Пол: Мужской 
C нами с 03.03.2006
Репутация: 100.4

Павлин, насколько я помню, задача следующая:
Имеется три поля day, month, year (integer)
Необходимо получить строку вида 'day.month.year'
Попробуйте использовать CONCAT:
CONCAT(day, '.', month, '.', year)
В начало
Профиль : Фотоальбом : Личное Сообщение
Павлин
Сообщение  31 Июл 2009, 12:23  Ссылка : Ответить с цитатой
Возраст: 37 Пол: Мужской 
C нами с 08.05.2009
Репутация: 5.6

NarWhal, Огромное спасибо

_____________________________
Прошу не тыкать в мануал его и так предостаточно!!!
В начало
Профиль : Личное Сообщение : Сайт : SkypeID : ICQ
Павлин
Сообщение  10 Окт 2009, 21:21  Ссылка : Ответить с цитатой
Возраст: 37 Пол: Мужской 
C нами с 08.05.2009
Репутация: 5.6

Подскажите плиз, есть три запроса, как объединить мне их в один и чтоб в результате получил Все товары, всех клиентов и все продажи:
1-ый запрос вытаскивает все товары из таблицы
SELECT klients.k_name, klients.address FROM sales 
LEFT JOIN klients ON klients.k_id = sales.k_id 
LEFT JOIN users ON users.user_id = sales.user_id 
WHERE sales.user_id ='$uid'
GROUP BY klients.k_name
ORDER BY klients.k_name
LIMIT 0 , 1000

2-ой запрос вытаскивает клиентов при условии что u_id = 1
SELECT tovars.t_name, tovars.t_package, tovars.t_ypakovka FROM tovars
ORDER BY tovars.t_name LIMIT 0 , 1000

3-ий запрос вытаскивает все продажи при условии что u_id = 1 и p_id = 10
SELECT users.username, tovars.t_name, tovars.t_package, tovars.t_ypakovka, klients.k_name, klients.address, sum( sales.stock ) AS stock, sum( sales.number ) AS number, sum( sales.stock ) - sum( sales.number ) AS rest, periods.period, CONCAT( p_date, '.', month , '.', year) AS date FROM sales
LEFT JOIN klients ON klients.k_id = sales.k_id
LEFT JOIN users ON users.user_id = sales.user_id
LEFT JOIN periods ON periods.p_id = sales.p_id
LEFT JOIN tovars ON tovars.t_id = sales.t_id
WHERE sales.user_id ='$uid' AND periods.period ='$per'
GROUP BY tovars.t_name, klients.k_name, tovars.t_ypakovka
ORDER BY tovars.t_name, klients.k_name LIMIT 0 , 1000

_____________________________
Прошу не тыкать в мануал его и так предостаточно!!!
В начало
Профиль : Личное Сообщение : Сайт : SkypeID : ICQ
NarWhal
Сообщение  20 Окт 2009, 12:15  Ссылка : Ответить с цитатой
Возраст: 45 Пол: Мужской 
C нами с 03.03.2006
Репутация: 100.4

Павлин, у Вас явно перепутано описание для первых двух запросов. Ну, да ладно.

Не совсем понятна задача. Третий Ваш запрос как раз и даёт информацию по заказам+клиентам_этих_заказов+товарам_этих_заказов. С ограничением по пользователю и периоду. Если Вам нужно получить вообще всю информацию, просто удалите условия в конструкции WHERE.

Или уточните задачу. Улыбочка
В начало
Профиль : Фотоальбом : Личное Сообщение
Совесть
Сообщение  31 Окт 2009, 12:35  Ссылка : Ответить с цитатой
Возраст: 35 Пол: Женский 
C нами с 27.01.2005
Репутация: 123.2

Подскажите пожалуйста, как можно решить такую проблему (или хотя бы где искать. Инет, гугл и т.п. не предлагать, ибо без некоторой конкретики поиск проблематичен, поэтому и интересуюсь здесь)
Имеется некая программка, отсылающая запросы к бд, собственно требуется написать нечто, которое будет перехватывать этот зарос и подменять его другим (Если чуть конкретнее - то изменять некоторые куски исходного запроса).
Отсюда вопрос - какими средствами можно решить подобную проблему?
Заранее спасибо.

_____________________________
Автор благодарит алфавит за предоставленные буквы.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение
Madlax
Сообщение  31 Окт 2009, 14:43  Ссылка : Ответить с цитатой
 
C нами с 25.01.2005
Репутация: 97.3

Вариант 1: если есть доступ к базе данных и логика изменения запроса несложная, то поменять таблицы на представления (view)

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

Вариант 3: ловить запросы на пакетном уровне, анализировать, подменять и отправлять на сервер базы данных
В начало
Профиль : Личное Сообщение
Совесть
Сообщение  31 Окт 2009, 22:10  Ссылка : Ответить с цитатой
Возраст: 35 Пол: Женский 
C нами с 27.01.2005
Репутация: 123.2

Madlax, я в основном думала про третий вариант решения проблемы, т.к. будет изменена сама структура бд, а приложение, посылающее запросы , будет работать со "старой" структурой. Поэтому и хотелось бы ловить запрос "на подходе" к базе.
Вот только какими методами это делается?
p.s. но так же имеется прямой доступ к базе. но все таки хотелось бы "оперативности"
заранее спасибо.

_____________________________
Автор благодарит алфавит за предоставленные буквы.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение
Madlax
Сообщение  01 Ноя 2009, 13:02  Ссылка : Ответить с цитатой
 
C нами с 25.01.2005
Репутация: 97.3

Совесть писал(а):
будет изменена сама структура бд, а приложение, посылающее запросы , будет работать со "старой" структурой.


Если я правильно понимаю, меняется только структура базы данных. Логика запросов остается неизменной.

В этом случае с использованием представлений и программирования базы данных можно очень просто новую структуру базы данных представить в том виде, в котором будут работать старые запросы.

Третий вариант делается с помощью прокси-эмулятора базы данных. Могу объяснить, как сделать. Но это существенно сложнее первого варианта, поэтому лучше еще раз подумать, действительно ли нужен именно этот вариант.
В начало
Профиль : Личное Сообщение
NarWhal
Сообщение  16 Ноя 2009, 12:30  Ссылка : Ответить с цитатой
Возраст: 45 Пол: Мужской 
C нами с 03.03.2006
Репутация: 100.4

Совесть, наиболее простой вариант, как мне видится, — использовать trigger'ы ( к примеру, на after select, чтобы заменить выдаваемые данные ). При этом не придётся изменять структуру или копаться в начальном запросе. Однако, этот способ может не подойти в некоторых случаях или быть слишком затратным. И, конечно же, СУБД должна поддерживать triger-функциональность.
В начало
Профиль : Фотоальбом : Личное Сообщение
rory2
Сообщение  12 Янв 2010, 21:11  Ссылка : Ответить с цитатой
Возраст: 33 Пол: Мужской 
C нами с 22.10.2006
Репутация: 107.9

Всем привет!
Помогите разобраться Улыбочка
Цитата:

<?php
include "config.php";
$ath = mysql_query("select * from authors");
if($ath)
{
$author = mysql_fetch_array($ath);
echo "<br>имя = ".$author['name']."<br>";
echo "пароль = ".$author['passw']."<br>";
echo "e-mail = ".$author['email']."<br>";
echo "url = ".$author['url']."<br>";
echo "ICQ = ".$author['icq']."<br>";
echo "about = ".$author['about']."<br>";
echo "photo = ".$author['photo']."<br>";
echo "time = ".$author['time']."<br>";
}
else
{
echo "<p><b>Error: ".mysql_error(). "</b></p>";
exit();
}
?>


Выдает ошибки Юзер
Цитата:

Warning: include(config.php) [function.include]: failed to open stream: No such file or directory in L:\home\localhost\www\1.php on line 2

Warning: include() [function.include]: Failed opening 'config.php' for inclusion (include_path='.;/usr/local/php5/PEAR') in L:\home\localhost\www\1.php on line 2

Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in L:\home\localhost\www\1.php on line 3

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in L:\home\localhost\www\1.php on line 3

Error: Access denied for user 'ODBC'@'localhost' (using password: NO)

Я так понял что самому писать config.php ?
Да-а,плтаформа Denwer.
И не понимаю,почему закрыт доступ:
Цитата:
Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in L:\home\localhost\www\1.php on line 3

Юзер
Спасибо!

_____________________________
Those who know, don`t speak.
Those who speak, don`t know.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : E-mail
Silicoid
Сообщение  12 Янв 2010, 22:28  Ссылка : Ответить с цитатой
Возраст: 45 Пол: Мужской 
C нами с 28.07.2005
Репутация: 135.1

именно. надо.
http://www.phpclub.net/manrus/f/ref.mysql.html
см пример номер 1.
у Вас не выбрана ни сервер базы данных, не сама база данных, а сразу идет запрос. Конечно тут будет ошибка Улыбочка без неё никак Улыбочка

И потом. Судя по коду, когда всё заработает, будет выведено первое выбраное значение из БД

зы.
не знаю может это старомодное решение, но как мне кажется надо разделять данные и язык запроса
я этот запрос написал-бы так:
SELECT * FROM `authors`
- разумеется работать будет и так и так, но по-моему так понятнее для разбора )) .. хотя это уже из разряда нра/не нра
В начало
Профиль : Блог : Личное Сообщение : Сайт : ICQ
rory2
Сообщение  12 Янв 2010, 23:35  Ссылка : Ответить с цитатой
Возраст: 33 Пол: Мужской 
C нами с 22.10.2006
Репутация: 107.9

Silicoid, если я вас правильно понял то :
Цитата:
<?php
/* Соединение, выбор БД */
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Could not connect");
print "Connected successfully";
mysql_select_db("my_database") or die("Could not select database");

/* Выполнение SQL query */
$query = "SELECT * FROM my_table";
$result = mysql_query($query) or die("Query failed");

/* Печать результатов в HTML */
print "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "\t<tr>\n";
foreach ($line as $col_value) {
print "\t\t<td>$col_value</td>\n";
}
print "\t</tr>\n";
}
print "</table>\n";

/* Освобождение resultset */
mysql_free_result($result);

/* Закрытие соединения */
mysql_close($link);
?>


Приблизительно это должно быть в config.php. Естественно немного доработать... Юзер

Добавлено спустя 2 часа 16 минут 16 секунд:

Silicoid, все получилось,код еще проще оказался Улыбочка
Цитата:

<?php
$dblocation = "localhost";
$dbname = "forum1";
$dbuser = "root";
$dbpasswd = "";
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!dbcnx)
{
echo ( "<p> В настоящий момент сервер базы данных не доступен,поэтому корректонео отображение страницы невозможно.</p>");
exit();
}
if (!@mysql_select_db($dbname, $dbcnx))
{
echo( "<p>В настоящий момент база данных не доступна,поэтому корректное отображение страницы невозможно.</P>");
exit();
}
?>


_____________________________
Those who know, don`t speak.
Those who speak, don`t know.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : E-mail
Svetic
Сообщение  23 Янв 2011, 20:58  Ссылка : Ответить с цитатой
Возраст: 39 Пол: Женский 
C нами с 01.10.2006
Репутация: 274.9

Ребята, у меня к вам вопрос: почему одни и те же запросы к базе данных выполняются в течение различного времени?
Есть страничка: http://autos78.ru/pdd/
Попробуйте пройтись по билетам, внизу страницы выводится значение в секундах загрузки данной страницы. В каких-то случаях страница загружается крайне быстро, а иногда - по несколько секунд. От чего это зависит? И каким образом можно привести время загрузки страницы к единому показателю (не больше 0,2)?

Добавлено спустя 58 минут 22 секунды:

Поменяла тип используемых таблиц с InnoDB на MyISAM (пришлось отказаться от использования связей между таблицами), запросы стали работать шустрее. Может быть, проблема была в типе таблицы?

_____________________________
Написать неработающую программу легче, чем разобраться в работающей
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение
NarWhal
Сообщение  23 Янв 2011, 22:12  Ссылка : Ответить с цитатой
Возраст: 45 Пол: Мужской 
C нами с 03.03.2006
Репутация: 100.4

Время загрузки страницы суммируется из многих составляющих. Запрос в базу — только одна из них. Что касается различного времени выполнения запросов, то тут, опять же, может повлиять каждый из набора факторов. К примеру:

1) Если используется кеширование результатов запросов, то последующие за первым будут выполняться значительно быстрее.
2) Наличие грамотного индексирования по филдам, участвующим в запросе увеличивает скорость получения результата запроса на порядки. Особенно это заметно при больших наборах данных (1млн и больше)
3) Количество параллельных запросов в базу влияет на скорость выполнения каждого из них.
4) Наличие ограниченных системных ресурсов уменьшает производительность и базы тоже.
В начало
Профиль : Фотоальбом : Личное Сообщение
Показать сообщения:   
На страницу «  1, 2, 3  »

Unsorted   ~  Software  ~  Development and Design  ~  Помощь по MySQL

Ответить на тему

Перейти:  





Powered by phpBB   © Unsorted Team  support@unsorted.me  promo@unsorted.me  Полезные скрипты