За последние 24 часа нас посетил 17631 программист и 1321 робот. Сейчас ищут 1068 программистов ...

Left join и одинаковые колонки

Тема в разделе "PHP и базы данных", создана пользователем Elect, 21 окт 2015.

  1. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    В общем получаю информацию о постах(posts и users)
    В обоих таблицах присутствует колонка id
    Всё перевожу в ассоциативный массив,выводит только id поста,но нужно ещё и id пользователя
    Массив $rows
    Помогите пожалуйста
     
  2. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    alias тебе поможет (;
     
  3. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    А можно помодробнее,это в sql,?
     
  4. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    Кинешь SQL (:) Кидай свой запрос сюда, и название таблицы, в которой нужно изменить (:)
     
  5. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Код (PHP):
    1. SELECT * FROM soc_posts p LEFT JOIN soc_groups g ON($id=g.id) LEFT JOIN soc_users u ON(p.author=u.id) WHERE p.wall_id='$id' AND p.type>'0' ORDER BY p.id DESC LIMIT ".$offset.",".$limit
    Нужно что бы в массиве различались id юзера и поста

    Добавлено спустя 4 минуты 19 секунд:
    Блин,я тут понял,что у меня 3 одинаковые колонки,в soc_groups тоже есть id

    Добавлено спустя 33 минуты 31 секунду:
    Я сделал,спасибо)))Понял,для чего нужны алиасы

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  6. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    совет на будущее: давать осмысленные имена переменным, классам, таблицам, полям и вообще всему у чего должен быть смысл. а именам полей вообще давать префикс с именем таблицы. например если есть таблица юзеров users то первичный ключ у нее - user_id. у таблицы постов posts - post_id. а поле автора поста (в таблице постов) - post_user_id. примерно так. убирает огромное количество неоднозначностей.
     
  7. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    Ganzal, ну ты молодец конешь, плохого не посоветовал (((((((((((:)
    А если у таблицы длинное название?? (;
     
  8. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    а зачем делать длинное название, даже если и так? разве нельзя грамотно сократить, чтобы всё ещё оставалось ясно?)
     
  9. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    бывают случаи, когда просто это не возможно, так как, только длинным названием можно описать сущность (:)
    например, information_schema, performance_schema... и т.п...
     
  10. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    p@R@dox 55RU как ты догадываешься это была общая рекомендация. всегда есть исключения и согласись их тоже нужно оформить так чтоб и не потерять логику и не нарушить читаемость.
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Я всегда пишу строго id и проблем не знаю. Просто иногда можно 1. применить волшебный AS, 2. использовать то поле, по которому джоинишь. Вот и всё.
     
  12. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    igordata, тоже интересный короткий вариант (:)

    Добавлено спустя 9 минут 43 секунды:
    Ganzal, всегда можно придумать правильный короткий вариант. Зависит только от фантазии разработчика ((:)
     
  13. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    имхо самое верное решение =) и надо указывать что откуда выбираешь, когда джоинишь.
     
  14. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    igordata, покажи пример (:)
     
  15. Ganzal

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

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

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не понял. я не знаю, как выбрать одним запросом и посты, и их теги. Я даже не знаю, зачем так делать.
     
  17. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    вот ты юлишь... выборку "всех тегов поста" или "всех постов тэга"
     
  18. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну можно тогда рассмотреть ситуацию, когда я хочу выбрать юзеров и название их группы, при условии, что один юзер - одна группа.

    Допустим, у меня есть таблица групп, с id, и таблица юзеров, где есть поле group, в которое вписан id из таблицы групп. Соотв я джоиню эти две таблицы, выбираю имя юзера, номер юзера id, потом номер группы у меня живёт в поле group, и я выбираю только название группы из таблицы групп, и мне не нужен id из таблицы групп просто потому что я джоиню по user.group = group.id и номер группы юзера у меня уже и так есть в поле user.group.

    чучхе?

    Добавлено спустя 26 секунд:
    все теги поста или все посты тега я выберу отдельным запросом
     
  19. MiksIr

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

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Post::with('tags')->get();