За последние 24 часа нас посетили 30368 программистов и 1753 робота. Сейчас ищут 850 программистов ...

Оператор JOIN для таблицы и поля

Тема в разделе "MySQL", создана пользователем allforweb, 31 янв 2011.

  1. allforweb

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

    С нами с:
    18 сен 2010
    Сообщения:
    72
    Симпатии:
    0
    Вопрос такое можно ли объединять в запросе таблицу и поле и если можно то как это сделать правильно, например через JOIN

    Не могу решить задачу:

    [sql]"SELECT * FROM table LEFT JOIN field FROM table2 WHERE `id`='$id'") or die (mysql_error());[/sql]

    Задача выбрать все поля в таблице 1 и конкретное поле в таблице 2, где совпадает id
    Пишет ошибку в синтаксисе.
     
  2. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Нужно указывать по имени какие именно поля выбираешь, а не через *, ну и объединять через ON `a`.`row` = `b`.`row2`
     
  3. tommyangelo

    tommyangelo Старожил

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

    Типа такого должно получиться

    SELECT table.*, table2.* FROM table LEFT JOIN table2 ON table.field1 = table2.field2 WHERE `table.id`= 5;
     
  4. allforweb

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

    С нами с:
    18 сен 2010
    Сообщения:
    72
    Симпатии:
    0
    Мне не нужно ON table.field1 = table2.field2, мне нужно только WHERE `id`='$id'".
    И мне не нужна вторая таблица полностью, а только одно поле.
     
  5. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    ну так и поставь в выборке table2.myfield вместо table2.*

    А вообще, если одно надо поле или пару - то нет смысла джоин делать, сделай подзапрос. Будет быстрее

    SELECT table.*, (SELECT myfield FROM table2 WHERE keyfield = table.keyfield) FROM table WHERE `table.id`= 5;