За последние 24 часа нас посетили 18472 программиста и 1708 роботов. Сейчас ищут 886 программистов ...

Помогите с запросом к базе

Тема в разделе "PHP и базы данных", создана пользователем AntonioS, 30 июн 2011.

  1. AntonioS

    AntonioS Активный пользователь

    С нами с:
    4 мар 2011
    Сообщения:
    5
    Симпатии:
    0
    Помогите, пожалуйста, разобраться с задачей.

    Есть 2 таблицы:

    Код (Text):
    1.    users
    2.  
    3.   | id |  name  | country |  
    4.   |----|--------|---------|  
    5.   |  1 |  Paul  |   UK    |  
    6.   |  2 |  John  | Germany |    
    7.   |  3 |  Tom   | France  |    
    8.   |  4 |  Fred  | Spain   |    
    Код (Text):
    1.   language
    2.  
    3.   | id |   language  |  type   |  
    4.   |----|-------------|---------|  
    5.   |  1 |   english   |  speak  |
    6.   |  1 |   french    |  learn  |
    7.   |  1 |   spanish   |  learn  |
    8.   |  2 |   german    |  speak  |
    9.   |  2 |   italian   |  learn  |
    10.   |  3 |   french    |  speak  |
    11.   |  3 |   english   |  speak  |
    12.   |  3 |   russian   |  learn  |    
    13.   |  4 |   spanish   |  speak  |  
    14.   |  4 |   chinese   |  learn  |    
    Данные, соответствующие условиям поиска по параметрам, должны
    выводиться при помощи шаблона в цикле. Не получается вывести пользователей
    с несколькими языками. Как составить запрос mySQL, чтобы получить
    вид типа:

    Код (Text):
    1.   Name: Paul
    2.   Country: UK
    3.   Speak: english
    4.   Learn: french, spanish
    5.  
    6.   Name: John
    7.   Country: Germany
    8.   Speak: german
    9.   Learn: italian
    10.  
    11.   Name: Tom
    12.   Country: France
    13.   Speak: french, english
    14.   Learn: russian
    15.  
    16.   Name: John
    17.   Country: Spain
    18.   Speak: spanish
    19.   Learn: chinese
     
  2. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    чем мудрить с архисложными запросами "непонятно что в конце получить надо", лучше сделать два запроса и отсортировать всё уже на пхп
     
  3. AntonioS

    AntonioS Активный пользователь

    С нами с:
    4 мар 2011
    Сообщения:
    5
    Симпатии:
    0
    Есть идея вывести в цикле, внутри которого еще один запрос.
    Но получается слишком много обращений к базе.
     
  4. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    AntonioS

    Не так уж и много - всего 2 запроса на каждого юзера. Один к users, второй к language
     
  5. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    AntonioS
    всего два запроса - в первом получаешь всех пользователей из первой таблицы, во втором - все данные из второй таблицы.
    в цикле на пхп строишь ассоциативный массив, который затем показываешь в хтмл
     
  6. AntonioS

    AntonioS Активный пользователь

    С нами с:
    4 мар 2011
    Сообщения:
    5
    Симпатии:
    0
    Спасибо, буду пробовать
     
  7. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    GROUP_CONCAT
     
  8. яфпкк

    яфпкк Активный пользователь

    С нами с:
    3 фев 2011
    Сообщения:
    3
    Симпатии:
    0
    вот так не получится одним запросом
    можно вывести два раза, каждый раз с разным языком, но вывести все языки в одном поле эт надо хранимую процедуру писать и т.д.