Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, amigos.
Estou com um problema devido aos parcos conhecimentos.
Será que alguém pode me ajudar?
Não consigo exibir textos e estabelecer relação com o autor, cujo nome não aparece na publicação, devido a erro na elaboração da Select.
MEDIA (onde estão os textos): id, autor_id, titulo, textos...
USUARIOS: id, autor etc...
Fiz assim, mas está errado:
SELECT * FROM media
INNER JOIN usuarios ON usuarios.id = autor_id
WHERE id = 'id' LIMIT $inicio, $qnt
Alguém pode me dar uma luz?
>
Tenta assim:
SELECT * FROM media INNER JOIN usuarios ON autor_id = usuarios.id WHERE id = 'id' LIMIT $inicio, $qnt
Amigo, deu esse erro:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''media' INNER JOIN 'usuarios' ON 'autor_id' = 'usuarios'.'id' WHERE 'id' = 'id' ' at line 1
use o Responder Azul /applications/core/interface/imageproxy/imageproxy.php?img=http://img222.imageshack.us/img222/8498/respondery.png&key=db0a5d713bd1099ba19595f08a80f5881ed1a276406432195f83536896c761d5" alt="respondery.png" />ou a 'Resposta Rápida'.
Os campos e as tabelas, devem ficar entre crase e não aspas simples
note a diferença, certo: media
errado: 'media'
com INNER JOIN não precisa usar a clausula WHERE... a clausula ON serve para o msmo proposito...
tenta assim:
SELECT * FROM media INNER JOIN usuarios ON media.autor_id = usuarios.id AND id = 'id' LIMIT $inicio, $qnt
ah... e vou fazer umas perguntas...
a coluna "autor_id" eh da tabela "media", certo?
e outra pergunta???
no " id = 'id' " esse "id" que você esta comparando eh uma variavel ou uma coluna de uma tabela???
pq se for variavel, você esqueceu do cifrão, e se for uma coluna, NÃO SE USA aspas...
passando de uma forma mais amigável, vê se dá para entender
SELECT
m.*, --seleciona * da tabela media
u.* --seleciona * da tabela usuario
FROM
media m --especifica que media eu chamarei de m
INNER JOIN --une com relacionamento obrigatório
usuarios u --especifica que usuarios eu chamarei de u
ON --onde
m.autor_id = u.id --o autor_id da tabela media for igual a id da tabela usuariosObrigado a todos. Deu tudo certo. A aula exemplar do Victor eu preciso agradecer especialmente.
>
com INNER JOIN não precisa usar a clausula WHERE... a clausula ON serve para o msmo proposito...
Nada haver, o ON serve pra fazer a ligação entre os registros, mais não pra identificar qual registro ele quer
Então ele pode ter o WHERE com ON pra pegar as informações de TAL ou TAIS livros
;)
bom brother... a unica vez que eu precisei usar nhjo meu site o INNER JOIN, tentei com o ON e o WHERE e deu erro... e tentei a msma coisa... só com o ON e deu certo... me de um exemplo ai que dê certo com as duas clausulas...
C:\Users\Andrey>cd ..
C:\Users>cd ..
C:\>cd \dev\mysql\bin\
C:\dev\mysql\bin>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.41 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database teste;
Query OK, 1 row affected (0.01 sec)
mysql> use teste;
Database changed
mysql> create table tabela1 ( id int( 11 ) not null, nome varchar( 12 ) not null );
Query OK, 0 rows affected (0.07 sec)
mysql> create table tabela2 ( id int( 11 ) not null, sobrenome varchar( 12 ) not null );
Query OK, 0 rows affected (0.06 sec)
mysql> insert into tabela1 values( 1, 'Andrey' );
Query OK, 1 row affected (0.01 sec)
mysql> insert into tabela2 values( 1, 'Knupp Vital' );
Query OK, 1 row affected (0.01 sec)
mysql> insert into tabela2 values( 2, 'Ferreira' );
Query OK, 1 row affected (0.01 sec)
mysql> insert into tabela1 values( 2, 'Marcos' );
Query OK, 1 row affected (0.00 sec)
mysql> select * from tabela1 inner join tabela2 on tabela1.id = tabela2.id where tabela1.nome = 'Andrey';
+----+--------+----+-------------+
| id | nome | id | sobrenome |
+----+--------+----+-------------+
| 1 | Andrey | 1 | Knupp Vital |
+----+--------+----+-------------+
1 row in set (0.00 sec)
mysql> select * from tabela1 inner join tabela2 on tabela1.id = tabela2.id where tabela1.nome = 'Marcos';
+----+--------+----+-----------+
| id | nome | id | sobrenome |
+----+--------+----+-----------+
| 2 | Marcos | 2 | Ferreira |
+----+--------+----+-----------+
1 row in set (0.00 sec)
;)
Tenta assim:
SELECT * FROM
mediaINNER JOINusuariosONautor_id=usuarios.idWHEREid= 'id' LIMIT $inicio, $qnt