powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с SELECT запросом
18 сообщений из 18, страница 1 из 1
Помогите с SELECT запросом
    #38717927
onuvidelsolnce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, помогите с запросом.

Пример:

Table1:Main(M)


Код: sql
1.
2.
3.
4.
5.
6.
7.
+--+-----+
|id|title|
+--+-----+
|1 |xxx  |
+--+-----+
|2 |yyy  |
+--+-----+




Table2:Other(O) (O.id_main=M.id)


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
+--+--------------+--------+------+
|id|id_main(=M.id)|id_field|value |   
+--+--------------+--------+------+
|1 |1             |1       |hhh   |
+--+--------------+--------+------+
|2 |1             |2       |ppp   |
+--+--------------+--------+------+
|3 |2             |1       | -    |
+--+--------------+--------+------+
|4 |2             |2       |nnn   |
+--+--------------+--------+------+





Желаемый результат:

Код: sql
1.
2.
3.
4.
5.
6.
+----+-------+---------------------+---------------------+
|M.id|M.title|O.value(O.id_field=1)|O.value(O.id_field=2)|
+----+-------+---------------------+---------------------+
|1   |xxx    |hhh                  |ppp                  |
|2   |yyy    | -                   |nnn                  |
+----+-------+---------------------+---------------------+




O.id_field будет от 1-5

Начало такое, а вот дальше..

Код: sql
1.
2.
3.
4.
SELECT M.id,title, O.value
FROM xxx_main M INNER JOIN xxx_other O
 ON M.id=O.id_main
.............? 



Помогите, спасибо.
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38718678
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
from table1
left join table2 t1
left join table2 t2
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38718691
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onuvidelsolnce,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT 
  M.id,
  title, 
  MAX(if(id_field=1, O.value,null) value_field_1,
  MAX(if(id_field=2, O.value,null) value_field_2
FROM 
  xxx_main M 
  JOIN xxx_other O ON M.id=O.id_main
GROUP BY  
  M.id
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38718692
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbconuvidelsolnce,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT 
  M.id,
  title, 
  MAX(if(id_field=1, O.value,null) value_field_1,
  MAX(if(id_field=2, O.value,null) value_field_2
FROM 
  xxx_main M 
  JOIN xxx_other O ON M.id=O.id_main
GROUP BY  
  M.id



хватит давать заведомо неправильные ответы.
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38718727
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow,


да ну? серьезно? ай-ай-ай, как нехорошо...
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38719020
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbcда ну? серьезно?у вас групбай формально неправильный, поля тайтл не хватает
хотя в данном случае это ни на что не влияет
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38719194
onuvidelsolnce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbconuvidelsolnce,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT 
  M.id,
  title, 
  MAX(if(id_field=1, O.value,null) value_field_1,
  MAX(if(id_field=2, O.value,null) value_field_2
FROM 
  xxx_main M 
  JOIN xxx_other O ON M.id=O.id_main
GROUP BY  
  M.id



Получил 502 Bad Gateway...
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38719320
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onuvidelsolnceПолучил 502 Bad Gatewayну вот это уж точно не вина мускля
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38719706
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirjavajdbcда ну? серьезно?у вас групбай формально неправильный, поля тайтл не хватает
хотя в данном случае это ни на что не влияет


аааа, так это ScareCrow просто придирается...
ничего страшного... настояшие админы должны бытъ
пунктуальными.
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38719743
onuvidelsolnce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ScareCrowjavajdbconuvidelsolnce,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT 
  M.id,
  title, 
  MAX(if(id_field=1, O.value,null) value_field_1,
  MAX(if(id_field=2, O.value,null) value_field_2
FROM 
  xxx_main M 
  JOIN xxx_other O ON M.id=O.id_main
GROUP BY  
  M.id



хватит давать заведомо неправильные ответы.


Вот так пишу уже в реальной ситуации, где может быть ошибка

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT 
  C.id,
  title, 
  MAX(if(fieldsid=8, F.value,null) value_field_1,
FROM 
  xxx_content C 
  JOIN xxx_fieldsattach_values F ON C.id=F.articleid
GROUP BY  
  C.id
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38719746
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У функции MAX закрывающей скобки нету
Код: sql
1.
 MAX(if(fieldsid=8, F.value,null)) value_field_1,
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38719760
onuvidelsolnce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT 
   C.id, 
   title,  
   F.value
FROM 
 xxx_content C INNER JOIN xxx_fieldsattach_values F 
   ON C.id=F.articleid
WHERE 
   C.id IN (62)



Вот эта конструкция рабочая и не вызывает, но только появляется не одна а несколько строк т.к. value имеет несколько значений для данной id=62/ Что бы все строки объеденились и создались колонки вместо лишних строк.?
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38719762
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onuvidelsolnce,

GROUP BY потерялся
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38719870
onuvidelsolnce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за решения и подсказки! Вот как работает

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT 
   C.id, 
   title,  
   MAX(if(fieldsid=8, F.value,null)) value_field_888,
FROM 
 xxx_content C INNER JOIN xxx_fieldsattach_values F 
   ON C.id=F.articleid
GROUP BY
   C.id




Но появилось одно - но. В таблице xxx_fieldsattach_values бывает так что вообще не существует значений в столбце 'value' для какой-либо строки т.е поля со значением физически в таблице еще не созданно и тогда получается так что если не существует для какого-нибудь id соответствующего значения в 'value', то все строка вообще не выводится(и таких строк достаточно много) единственный вариант пришедший мне дилетанту на ум это намеренно заполнить все поля даже пустыми значениями, но это очень долго. Подскажите как можно этого избежать и выводить всех строки даже если для какой-то строки не существует сообтветствующего значения 'value'(физически в таблице)? Спасибо.
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38719872
onuvidelsolnce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дополню предыдущий пост

Код: sql
1.
MAX(if(fieldsid=8, F.value,null)) value_field_888 

- этот запрос может ничего не вернуть для конкретной строки со значениями, так как его в таблице может еще не существовать и тогда получается что вся строка не выводится.
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38719893
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onuvidelsolnceДополню предыдущий пост

Код: sql
1.
MAX(if(fieldsid=8, F.value,null)) value_field_888 

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


попробуйте поменять слово INNER на LEFT
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38720076
onuvidelsolnce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbconuvidelsolnceДополню предыдущий пост

Код: sql
1.
MAX(if(fieldsid=8, F.value,null)) value_field_888 

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


попробуйте поменять слово INNER на LEFT

Спасибо! теперь все строки выводятся


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT 
   C.id, 
   title,  
   MAX(if(fieldsid=8, F.value,null)) value_field_888,
FROM 
 xxx_content C INNER LEFT xxx_fieldsattach_values F 
   ON C.id=F.articleid
GROUP BY
   C.id
...
Рейтинг: 0 / 0
Помогите с SELECT запросом
    #38720080
onuvidelsolnce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT 
   C.id, 
   title,  
   MAX(if(fieldsid=8, F.value,null)) value_field_888
  FROM 
 to333_content C LEFT JOIN to333_fieldsattach_values F 
   ON C.id=F.articleid
GROUP BY
   C.id
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с SELECT запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]