|
|
|
Две таблицы - одна строка.
|
|||
|---|---|---|---|
|
#18+
Доброго времени. Вопрос такой: Есть две таблицы в одной: table1 id | Наименование 1 | Итем1 2 | Итем2 id уникален и не может повторяться В другой table2 id | Тип | значение 1 | большой | 30 1 | маленький | 15 2 | большой | 45 2 | маленький | 35 id повторяемый - одной записи из первой таблицы соответсвуют множество из второй table1.id соотвествует table2.id LEFT JOIN'ом можно составить такую таблицу: Наименование| Тип | значение Итем1 | большой | 30 Итем2 | большой | 45 Итем1 | маленький| 15 Итем2 | маленький| 35 Можно ли одним запросом составить следующую таблицу(используя только mysql, без php): Наименование| большой | маленький Итем1 | 30 | 15 Итем2 | 45 | 35 Даже не знаю что в поиске вбить :) Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 17:05:06 |
|
||
|
Две таблицы - одна строка.
|
|||
|---|---|---|---|
|
#18+
Можно. Двумя джойнами. Используйте табличные алиасы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 17:08:47 |
|
||
|
Две таблицы - одна строка.
|
|||
|---|---|---|---|
|
#18+
Я так понял, один из вариантов: можно составить таблицу полей второй, которая будет содержать "тип" и "значение" , а затем выбрать Join'ом SELECT t1.*, t2.* FROM table1 t1 JOIN ( SELECT id, field FROM table2, fields GROUP BY id ) t2 ON t1.id = t2.id; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 17:13:58 |
|
||
|
Две таблицы - одна строка.
|
|||
|---|---|---|---|
|
#18+
miksoftМожно. Двумя джойнами. Используйте табличные алиасы. Табличные алиасы... Дело в том, что я сравнительно недавно с mysql (и с sql в целом), поэтому пока не знаю такой конструкции. Если вы сможете привести пример конкретно с предоставленными мной данными, буду вам очень признателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 17:17:34 |
|
||
|
Две таблицы - одна строка.
|
|||
|---|---|---|---|
|
#18+
boobenТабличные алиасы... Дело в том, что я сравнительно недавно с mysql (и с sql в целом), поэтому пока не знаю такой конструкции. Если вы сможете привести пример конкретно с предоставленными мной данными, буду вам очень признателен. Вы не об "table AS t" ведь говорите? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 17:19:43 |
|
||
|
Две таблицы - одна строка.
|
|||
|---|---|---|---|
|
#18+
SELECT DISTINCT(COLUMN_NAME) as `name` FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='table2' WHERE COLUMN_NAME!='id' Можно вот так выбрать столбцы, но я понял вы не об этом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 17:23:32 |
|
||
|
Две таблицы - одна строка.
|
|||
|---|---|---|---|
|
#18+
Есть такой вариант: SELECT t1.*, t2.* FROM table1 t1 JOIN ( SELECT id, MAX(IF(`тип` = 'большой', значение, NULL)) AS `большой`, MAX(IF(`тип` = 'маленький', значение, NULL)) AS `маленький` FROM table2 GROUP BY id ) t2 ON t1.id = t2.id; Но это не то - я статично называю имена столбцов Можно ли формировать динамически? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 18:04:25 |
|
||
|
Две таблицы - одна строка.
|
|||
|---|---|---|---|
|
#18+
booben"table AS t"Да. boobenНо это не то - я статично называю имена столбцов Можно ли формировать динамически?Нет. SQL-запрос всегда имеет фиксированное число полей в результате. Исключение - звездочка, но она вам не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 18:17:01 |
|
||
|
Две таблицы - одна строка.
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 18:21:30 |
|
||
|
Две таблицы - одна строка.
|
|||
|---|---|---|---|
|
#18+
miksoftНет. SQL-запрос всегда имеет фиксированное число полей в результате. Исключение - звездочка, но она вам не поможет. Понял, ну что ж, спасибо за помощь. Тогда во избежание кучи запросов, проще добавить новое поле в первую таблицу, сохранять в него поля второй таблицы в виде "большой: 30; маленький: 15" и парсить как строку. :) Кеш в поле таблицы. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 18:47:25 |
|
||
|
Две таблицы - одна строка.
|
|||
|---|---|---|---|
|
#18+
booben, Недавно делал динамический запрос на MySQL, для неизвестного заранее числа колонок — посмотрите, если интересно:) sqlfiddle.com/#!2/c0362/1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 18:51:38 |
|
||
|
Две таблицы - одна строка.
|
|||
|---|---|---|---|
|
#18+
boobenдобавить новое поле в первую таблицу, сохранять в него поля второй таблицы в виде "большой: 30; маленький: 15" и парсить как строку. :)А вот такое поле, как раз, можно и на лету вычислять. Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2013, 19:21:13 |
|
||
|
Две таблицы - одна строка.
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, Интересное решение, спасибо ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2013, 17:17:07 |
|
||
|
Две таблицы - одна строка.
|
|||
|---|---|---|---|
|
#18+
miksoft, Точно, спасибо за подсказку. Групповой конкатенацией уже пользовался в похожей задаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2013, 17:19:24 |
|
||
|
Две таблицы - одна строка.
|
|||
|---|---|---|---|
|
#18+
miksoft, А чего только через = и ; ? Обрамить символами json и работать дальше с нормальным json-объектом на клиенте. Нет? :) А я слепил, за пару часов, 4 функции в класс ( jsonPair(), jsonObject(), jsonVar() и jsonArray() ), которые эти символы втыкают "автоматом" в запрос. Дополнительно учитывают свою вложенность друг в друга, делают правильное слешование как json хочет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2013, 18:49:45 |
|
||
|
Две таблицы - одна строка.
|
|||
|---|---|---|---|
|
#18+
Arhat109miksoft, А чего только через = и ; ? Обрамить символами json и работать дальше с нормальным json-объектом на клиенте. Нет? :)Да как угодно. Лично я json нигде не использую, мне даже в голову не пришло json-ом форматировать. Да и это же не готовый SQL-запрос для продакшена, а просто идейная заготовка, чтобы человек понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2013, 18:54:42 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38363591&tid=1836263]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
70ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 257ms |
| total: | 439ms |

| 0 / 0 |
