использует для пространств имен в SQL-запросах - PullRequest
0 голосов
/ 30 ноября 2011

Я читаю этот запрос БД, и я не уверен, что мне нужно l. перед каждым выбором.

Что означает l. как в l.id или l.node_id? Мне это нужно? Если нет, то для чего я бы его использовал?

        SELECT
            l.id, l.node_id,
            l.name, l.phone, l.email
        FROM
            leads l
        WHERE
            l.active = 1
            AND agent_id = '.$user->id.'
        GROUP BY l.id

Ответы [ 3 ]

3 голосов
/ 30 ноября 2011

Это псевдоним, стоящий за столом. FROM leads l означает «из таблицы leads, которая будет упоминаться как l в другом месте этого запроса». Чтобы написать запрос без псевдонима, вы можете написать:

SELECT leads.id, leads.node_id,
       leads.name, leads.phone, leads.email
  FROM leads
 WHERE leads.active = 1
   AND agent_id = ...
 GROUP BY leads.id
;

Но поскольку в этом запросе есть только одна таблица, вам не нужно использовать префикс вообще; что-то вроде этого прекрасно:

SELECT id, node_id,
       name, phone, email
  FROM leads
 WHERE active = 1
   AND agent_id = ...
 GROUP BY id
;

Обычно такой префикс (или leads., или l.) используется, когда существует некоторая неопределенность, на которую автор запросов хочет обратиться & mdash; или чтобы не сбить с толку механизм базы данных, или чтобы не запутать человека, читающего запрос, или и то и другое & mdash; но некоторые люди обычно используют эти префиксы как для ясности, так и никогда не рискуют внести двусмысленность.

1 голос
/ 30 ноября 2011

«l» - это псевдоним вашей таблицы потенциальных клиентов. Использование псевдонима часто более удобно, чем добавление префикса к ссылкам на столбцы с полным именем таблицы, поскольку его быстрее набирать (как вы можете видеть в этом случае). Что касается того, почему вам нужно ставить префиксы для ссылок вообще, либо с псевдонимом, либо с буквальным именем - в случае выбора из одной таблицы это не является абсолютно необходимым. Однако, если вы когда-нибудь решили, что вам нужно присоединиться к любой другой таблице (что вам очень часто нужно делать), то вам, скорее всего, придется ставить префикс ссылок на столбцы с именем (или псевдонимом) таблицы, в которой они происходят Это потому, что между таблицами могут легко возникнуть конфликты имен, и сервер должен знать, куда обращаться для разрешения ссылки.

1 голос
/ 30 ноября 2011

l - псевдоним для таблицы leads.Вам не нужны псевдонимы, когда вы запрашиваете только одну таблицу.Но если вы запрашиваете две таблицы, у каждой из которых есть столбец с именем id, вам придется набрать полное имя таблицы <table_name>.id, чтобы различать два столбца идентификатора, псевдонимы делают это короче.

SELECT
    l.id, r.id, l.node_id,
    l.name, l.phone, l.email
FROM
    leads l, another_table r
WHERE
    l.active = 1 
    AND agent_id = '.$user->id.'
    AND r.id = l.id
GROUP BY l.id

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...