Me aburro, asi que se me ocurrió explicar un poco por encima esto...
Antes de empezar, teneis que saber que no hay por que seleccionar todos los datos de la tbla (usando *), se pueden coger datos especificos (SELECT nombre, contrasena FROM usuarios)...
AS se usa para asignar un nombre a algo extraido de mysql, de esta manera, podremos obtenerlo con mysql_fetch_array, por ejemplo, quiero obtener el valor absoluto de un numero guardado en MySQL (el valor absluto se calcula mediante la funcion abs de MySQL)
Ejemplo:
$query = mysql_query("SELECT num, abs(num) AS nabsoluto FROM numeros");
while($fetch = mysql_fetch_array($query)) {
echo 'Numero: '.$fetch['num'].' absoluto: '.$fetch['nabsoluto'].' <br>';
}
Aquí, he seleccionado la columna num y el absoluto de num de la tabla numeros.
Al absoluto le he asignado el nombre "nabsoluto".
Es facil, ¿No?
Pero no se usa solo con datos, si no con las propias tablas si queremos (FROM mitabla AS latabla), más por comodidad que usabilidad.
Para seleccionar datos de varias tablas debemos indicar varias en el FROM:
FROM tabla1, tabla2
Podemos asignarles un nombre:
tabla1 AS t1, tabla2 AS t2
Y para coger datos, usamos el nombre seguido de un punto y el campo, asi:
SELECT t1.nombre, t2.nombre FROM tabla1 AS t1, tabla2 AS t2 WHERE t1.id = '2' OR t2.id = '2' ORDER BY t1.id
Como veis, tambien es así en el WHERE y ORDER BY.
Un ejemplo practico. Queremos seleccionar los mensajes de usuarios con rango 1, normalmente lo ariamos asi:
$mensajes = mysql_query("SELECT * FROM `mensajes`");
while($mensaje = mysql_fetch_array($mensajes)) {
$usuario = mysql_query("SELECT rango FROM `usuarios` WHERE id = '".$mensaje['autor']."'");
$fetch = mysql_fetch_array($usuario);
if($fetch['rango'] == 1) {
echo $mensaje['contenido'];
}
}
Hacer esto nos ha llevado 2 querys y un if, ademas de ser molesto, son monton de querys, porque por cada mensaje, se hace una query para el usuario, (con 100 mensajes hariamos 100 querys!)
Es mucho mas simple hacer esto:
$mensajes = mysql_query("SELECT m.* FROM mensajes AS m, usuarios AS u WHERE u.id = m.autor AND u.rango = '1'");
while($mensaje = mysql_fetch_array($mensajes)) {
echo $mensaje['contenido'];
}
Aquí, usamos una sola query (para 1 mensaje o para 100).
En ella seleccionamos todo (con el comodin *) de la tabla mensajes.
En el WHERE, he indicado que el id del usuario tiene que ser el guardado en la tabla mensajes (para ese mensaje) y el rango de ese usar debe ser 1.
Por supuesto, para mostrar datos del user podemos poner SELECT m.*, u.nombre, u.avatar,...
Espero que esto os sirva, es bastante sencillito
