MySQL запрос с использованием соединения - PullRequest
0 голосов
/ 23 марта 2011

У меня есть 2 таблицы - 'cityname' и 'citymoisture'.

'cityname' has 2 columns:  
-city_ID <- integer and primary key that increments automatically  
-city_full_name <- character name i.e. boston, toronto, new york city etc...  

'citymoisture' has 7 columns:  
-city_ID <- tied to the city_ID field via a Foreign Key  
-date  
-time  
-open  
-high  
-low  
-close  

Что я хочу сделать, это -

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

Работает следующий запрос:

USE moisturedb  
SELECT citymoisture.date, citymoisture.time, citymoisture.close  
FROM citymoisture  
WHERE (citymoisture.date BETWEEN '2011/03/09' AND '2011/03/14') AND citymoisture.city_id=5;

Но это относится только к таблице 'citymoisture'. У меня есть внешнее приложение, которое позволяет пользователям выбирать название города, поэтому в некотором смысле я хочу выполнить объединенный запрос, который отбрасывает результаты на основе столбца city_full_name в таблице cityname.

Я возился с несколькими запросами на соединение без успеха. Я также провел последние несколько часов безуспешно, просматривая примеры запросов на соединение.

Я очень ценю вашу помощь.

В качестве продолжения запроса Нихила приведен пример вывода предложенного запроса.

| 2011-03-10   | 03:38:00     | 0.918 |
| 2011-03-10   | 03:39:00     | 0.897 |
| 2011-03-10   | 03:40:00     | 0.917 |
| 2011-03-10   | 03:41:00     | 0.915 |
| 2011-03-10   | 03:42:00     | 0.914 |
| 2011-03-10   | 03:43:00     | 0.924 |
| 2011-03-10   | 03:44:00     | 0.922 |
| 2011-03-10   | 03:45:00     | 0.922 |
| 2011-03-10   | 03:46:00     | 0.923 |
| 2011-03-10   | 03:47:00     | 0.935 |
| 2011-03-10   | 03:48:00     | 0.953 |
| 2011-03-10   | 03:49:00     | 0.927 |  
| 2011-03-10   | 03:50:00     | 0.962 |  
| 2011-03-10   | 03:51:00     | 0.914 |  
| 2011-03-10   | 03:52:00     | 0.935 |  
+--------------+--------------+-------+  
14770 rows in set (2 min 28.80 sec)  

Где 3-й столбец - данные о влажности. Значения для каждого города в запросе связаны в том смысле, что они расположены друг за другом. Я бы очень хотел следующий вывод, где данные о влажности для каждого города отображаются в отдельных столбцах:

2011-03-10  03:49:00  0.935  0.935  0.935  .....  
2011-03-10  03:50:00  0.935  0.935  0.935  .....  
2011-03-10  03:51:00  0.935  0.935  0.935  .....  
2011-03-10  03:52:00  0.935  0.935  0.935  .....  
2011-03-10  03:53:00  0.935  0.935  0.935  .....  
2011-03-10  03:54:00  0.935  0.935  0.935  .....  

Ответы [ 2 ]

1 голос
/ 23 марта 2011

Попробуйте это:

USE moisturedb  
SELECT citymoisture.date, citymoisture.time, citymoisture.close  
FROM citymoisture INNER JOIN cityname ON cityname.city_ID=citymoisture.city_ID
WHERE (citymoisture.date BETWEEN '2011/03/09' AND '2011/03/14') AND cityname.city_full_name='boston'
0 голосов
/ 23 марта 2011
SELECT citymoisture.date, citymoisture.time, citymoisture.close 
FROM citymoisture LEFT JOIN cityname USING (city_ID)
WHERE (citymoisture.date BETWEEN '2011/03/09' AND '2011/03/14')
AND citymoisture.city_full_name='boston';

Однако я думаю, что запрос, который вы разместили в своем вопросе, является тем, который следует использовать.У вас должен быть пользовательский интерфейс с раскрывающимся списком, чтобы пользователь мог выбрать город.Этот раскрывающийся список может быть заполнен с помощью cityname, так что city_ID отправляется обратно на сервер, когда пользователь выбирает город.Затем вы можете использовать city_ID в исходном запросе, который вы разместили.Для справки проверьте атрибут value тега option здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...