LewisJWright
LewisJWright

Reputation: 362

What does "s." and "n" mean/do in this mysql statement?

I'm currently working on a project that requires me look at someone elses code, i'm still new to some of this stuff and there is something that I dont quite understand so was hoping someone could shed some light on what the code is actually doing or what it means?

Here is the statement in question:

select s.* from $tableA n, $tableB s where
            n.id='$send' and
            n.status='$status' and
            n.field=s.id";

I understand that down to basics this statement is getting all of the fields from tableA and tableB im just unsure what the s. does or what the n does in this statement? are they simply there as identifiers or am I completely wrong in this manner? I am happy to provide more information if it is necessary.

Upvotes: 0

Views: 924

Answers (1)

StoYan
StoYan

Reputation: 255

They are called SQL Table Aliases and are basically temporary names which you give to the tables in order to have better readability when you use the table names to specify a column.

In your example

SELECT s.* FROM $tableA n, $tableB s
WHERE  n.id='$send'
       AND n.status='$status'
       AND n.field=s.id ;

is the same as

SELECT $tableB.* FROM $tableA, $tableB
WHERE  $tableA.id='$send'
       AND $tableA.status = '$status'
       AND $tableA.field = $tableB.id ;

but obviously it's easier to read.

The table aliases are even more useful when you join more tables and are absolutely a must when you make self joins.

Syntax note:

You may or you may not use the AS keyword when alias a table.

SELECT table_name AS alias

is the same as

SELECT table_name alias

and although it's longer sometimes it leads to a better readability (for example in a large and messy query the big AS is easier to spot :)

Upvotes: 3

Related Questions