Непонятна деталь в запросе

idencial

Одинаковый
Непонятна деталь в запросе

Олег Юсов как-то в статье про релевантность написал следующий запрос:

$query = "SELECT *, MATCH field AGAINST ('$searchwords') as relev FROM table ORDER BY relev DESC"

Почти все мне в этом запросе понятно, кроме одного:
зачем после * идет запятая? ЧТо это за синтаксис такой?
 

Сытник

Guest
Re: Непонятна деталь в запросе

Автор оригинала: idencial
Олег Юсов как-то в статье про релевантность написал следующий запрос:

$query = "SELECT *, MATCH field AGAINST ('$searchwords') as relev FROM table ORDER BY relev DESC"

Почти все мне в этом запросе понятно, кроме одного:
зачем после * идет запятая? ЧТо это за синтаксис такой?
выбираются все поля из таблицы table + поле relev. В синтаксисе SQL "все поля" - это астерикс (*), а "+" - это запятая... вроде...
 

RomikChef

Guest
поля, которые ты запрашиваешь, перечисляются через запятую. вот и весь синтаксис :))))
 

idencial

Одинаковый
ну правильно, если я пишу SELECT field1, field2 MATCH
А тут получается SELECT field1, field2, MATCH

Вопрос о этой второй запятой после field2,

Также не совсем понятно использование поля relev, которого фактически в таблице нет
 

RomikChef

Guest
MATCH field AGAINST ('$searchwords') - это поле :)

селект может возвращать не только поля, которые есть в таблицах. он может возвращать вообще все, что угодно.
выполни
select 'test'
select 1+1
можно так:
select *,'test' from table limit 1
select id,1+1 from table limit 1
(лимит нужен чтобы тебе не выдавало количество ответов по числу записей в таблице)
тебе знакома конструкция
select count(*) from table ?
а вед поля count(*) тоже нет в таблице!

as - это присвоение полю нового имени
select 2*2 as pole
 

idencial

Одинаковый
Это все понятно, спасибо.

Но все же запись *, означается выбрать все поля и еще одно (в данном случае relev)?
 
Сверху