Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - [решено] Извлечь данные одним запросом

Ответить
Настройки темы
MySQL - [решено] Извлечь данные одним запросом

Аватара для Strange_V

Старожил


Сообщения: 222
Благодарности: 29


Конфигурация

Профиль | Отправить PM | Цитировать


На самом деле запрос немного сложнее и содержит больше таблиц, но упирается все в такую конструкцию:
Код: Выделить весь код
workers
id|name|position|
 1|  n1|       1|
 2|  n2|       2|

position
id|num|date      |name|
 1|  1|01/01/2008|  p1|
 2|  2|01/01/2008|  p2|
 3|  1|01/02/2008| p1n|
Запрос:
Код: Выделить весь код
SELECT w.name, p.name, p.date
FROM workers w
LEFT JOIN position p ON w.position = p.num (and поле date максимальное)
Должен получить:
Код: Выделить весь код
|  n1| p1n|01/02/2008|
|  n2|  p2|01/01/2008|
В оригинале дата хранится в timestamp

-------
Жизнь-это шахматная партия, по окончании которой и короли, и пешки ложатся в один ящик.


Отправлено: 18:28, 20-02-2008

 

Deadooshka


Сообщения: 2283
Благодарности: 594

Профиль | Отправить PM | Цитировать


Цитата Strange_V:
(and поле date максимальное) »
Код: Выделить весь код
ORDER BY date DESC LIMIT 2
?

Отправлено: 19:00, 20-02-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Strange_V

Старожил


Сообщения: 222
Благодарности: 29

Профиль | Отправить PM | Цитировать


Число записей в workers как и повторяющихся (с разными датами) в position непостоянно, так не выйдет, к тому же хотелось бы иметь возможность сортировать так как будет удобно пользователю.

Приблизительно так выбираются данные в оригинале (возможно так будет проще объяснить)
Код: Выделить весь код
SELECT tmc.inv_num,
p.name AS position,
w.fname,
w.lname,
p.tn,
m.name AS model
FROM tmc
LEFT JOIN doc_work dw ON tmc.id = dw.tmc and dw.frm = -1 (вот тут выбираются лишние строки, нужно только с самим большим значением dw.date)
LEFT JOIN workers w ON dw.rcpt = w.id
LEFT JOIN position p ON w.position = p.n
LEFT JOIN model m ON tmc.model = m.n and tmc.type = m.type
WHERE tmc.type = 1
ORDER BY 1

-------
Жизнь-это шахматная партия, по окончании которой и короли, и пешки ложатся в один ящик.


Отправлено: 20:25, 20-02-2008 | #3


Deadooshka


Сообщения: 2283
Благодарности: 594

Профиль | Отправить PM | Цитировать


imo без вложенного запроса не обойтись...
Код: Выделить весь код
... AND date=(SELECT MAX(date) FROM p WHERE ....)
и запрос лучше как-то логически перестроить, поскольку сложно будет оптимизировать...
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:30, 20-02-2008 | #4


Аватара для Strange_V

Старожил


Сообщения: 222
Благодарности: 29

Профиль | Отправить PM | Цитировать


Sham, спасибо, так и хотел, но не совсем получалось.
Тут все ответы.

-------
Жизнь-это шахматная партия, по окончании которой и короли, и пешки ложатся в один ящик.


Отправлено: 23:18, 20-02-2008 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - [решено] Извлечь данные одним запросом

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Как из архивного образа системы извлечь нужные данные реестра? ZurabK Microsoft Windows Vista 5 10-09-2020 12:08
Прочее - [решено] Помогите с запросом. Butunin Klim Microsoft Exchange Server 5 07-05-2009 14:12
[решено] извлечь строчку из HTML FlatX007 AutoIt 5 03-05-2009 17:31
HDD - Как извлечь данные с жёсткого диска Alla65 Накопители (SSD, HDD, USB Flash) 8 17-04-2009 18:27
Помогите с запросом BuilderMan Вебмастеру 2 27-09-2006 11:53




 
Переход