fendert12
fendert12

Reputation: 11

Explain a MySQLi query that displays top 3 sold cars

I found the following mysqli query on the internet. It displays top 3 sold cars

//create conection with mysql database.
$conn =  mysqli_connect("localhost","root","","cars");

//query
$select =  "SELECT ord.*, sum(amount) as amt from orders as ord GROUP BY id_car order by amt desc limit 0,3";

$data   =  mysqli_query($conn,$select);

This query works fine but I would like if anyone can explain me this first section of the query: SELECT ord.*,

It seems like "ord" refers to orders but is it the same as saying: SELECT * FROM orders??

See table in the screenshot image orders table

Upvotes: 0

Views: 80

Answers (3)

praveen
praveen

Reputation: 1385

It is same as select * from tableName,it will fetch all columns from table.But alias Name is given for the table. Using alias Name is best practices for joining the multiple tables.

since you are using single table you can do this also.

SELECT *, sum(amount) as amt from orders as ord GROUP BY id_car order by amt desc limit 0,3

Upvotes: 0

maxhb
maxhb

Reputation: 8865

Let's break it down:

a) Select all fields from table named ord which will be defined in c)

SELECT ord.*,

b) Select sum of column amount and name it amt

sum(amount) as amt

c) Use table orders for the query and define an alias name ord for that table, see a)

from orders as ord

Upvotes: 0

Brian
Brian

Reputation: 8626

In the query there is orders as ord this gives the orders table an 'alias' of the orders table, so ord.* means orders.*

It is a bit redundant in this query to be honest, mainly used if there are multiople tables in a query :)

For this query you can simply do:

$select =  "SELECT *, sum(amount) as amt from orders GROUP BY id_car order by amt desc limit 0,3";

Upvotes: 2

Related Questions