За последние 24 часа нас посетили 17966 программистов и 1602 робота. Сейчас ищут 1710 программистов ...

Вывод ячеек с одинаковым именем.

Тема в разделе "MySQL", создана пользователем daria174, 27 ноя 2015.

  1. daria174

    daria174 Новичок

    С нами с:
    3 сен 2015
    Сообщения:
    52
    Симпатии:
    0
    Доброго времени суток. Вот я добралась и до этого раздела. :)
    Ситуация такая. Есть две таблицы. Я вытаскиваю из них данные так:
    Код (PHP):
    1. <span class="syntaxdefault">SELECT table1</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">surname</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">table1</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">name</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">table2</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">har</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">table2</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">data FROM table1 JOIN table2 ON table1</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">id</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">table2</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">id_learner WHERE table1</span><span class="syntaxkeyword">.class=</span><span class="syntaxstring">'2-1'</span><span class="syntaxdefault"></span>
    Данные выводятся таким образом:
    user1surname | user1name | user1har | data1
    user1surname | user1name | user1har | data2
    user1surname | user1name | user1har | data3
    А хотелось бы, чтобы данные выводились так:
    user1surname | user1name | user1har | data1 | data2 | data3
    На ум кроме конкатенации, ничего не приходит. Мб кто-нибудь подскажет вариант?
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Код (PHP):
    1. SELECT table1.surname AS user1surname,table1.name AS user1name
    2.  , table2.har AS user2har ,table2.data AS user2data
    3. FROM table1 
    4. JOIN table2 ON table1.id=table2.id_learner 
    5. WHERE table1.class='2-1' 
     
  3. daria174

    daria174 Новичок

    С нами с:
    3 сен 2015
    Сообщения:
    52
    Симпатии:
    0
    Ну это получается то же самое.

    Добавлено спустя 31 минуту 20 секунд:
    Как вариант развития событий. Смогла добиться решения данной задачи только в два подхода.
    1.
    Код (PHP):
    1. <span class="syntaxdefault">SELECT table1</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">id FROM table1 WHERE table1</span><span class="syntaxkeyword">.class=</span><span class="syntaxstring">'2-1' </span><span class="syntaxdefault"></span>
    Данные записываю в массив.
    Подставляя данные (id) из массива прогоняю вторую выборку и получаю нужные данные
    2.
    Код (PHP):
    1. <span class="syntaxdefault">SELECT table2</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">data FROM table2 WHERE table2</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">id_learner</span><span class="syntaxkeyword">=</span><span class="syntaxstring">'201' </span><span class="syntaxdefault"></span>
    Получаю список дат.
    Решение далеко не самое изящное. Можно это все как то привести к нормальному виду (в виде 1 запроса?).
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
  5. daria174

    daria174 Новичок

    С нами с:
    3 сен 2015
    Сообщения:
    52
    Симпатии:
    0
    Спасибо большое, вроде то что надо. Я всегда сначала лезу в гугл, и на форум стараюсь писать в крайнем случае.
    Я вот просто не могла правильно сформулировать вопрос что бы задать его гуглу )))), а ведь правильно сформулированный вопрос - это уже половина ответа.
    Пойду читать.
    Всех с пятницей!!! :-*
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    Чтобы такое сделать, надо сначала определить а чем data1, data2 и data3 отличаются друг от друга.
    Если такой критерий есть, то можно сделать три джойна вместо одного. Иначе присмотреться к GROUP_CONCAT() или накапливать и поворачивать таблицу уже в Представлении.
     
  7. daria174

    daria174 Новичок

    С нами с:
    3 сен 2015
    Сообщения:
    52
    Симпатии:
    0
    Это различные даты, хранящиеся в unixtime.
    Pivot вроде то, что нужно, но я никак не могу разобраться что там да как (((((
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    А ты пытаешся? Продемонстрируй.
     
  9. daria174

    daria174 Новичок

    С нами с:
    3 сен 2015
    Сообщения:
    52
    Симпатии:
    0
    Всем доброе утро.
    Простите что не смогла вовремя ответить (((. У нас случился переезд в эти выходные, так что буду сегодня пробовать вновь.
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    нам такие интимные подробности ни к чему. я с ребенком возился все выходные, а в ночь с субботы на воскресенье в доту рубился. ну свою любимую формулу-1 не забыл посмотреть. видишь? всем пофиг. пропала на несколько дней и пропала. я тут порой на пару лет пропадаю и ничего.
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а я дрочил. Но поработать успел! Руками. Я ж программист. Ладно, ухожу, ухожу.