Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Elnata COsta

Left Join

Recommended Posts

Pessoal, eu tenho o seguinte código mysql que eu já peguei pronto:

SELECT a.*, c.name as aircraftname,
					p.code, p.pilotid as pilotid, p.firstname, p.lastname,
					dep.name as depname, dep.lat AS deplat, dep.lng AS deplng,
					arr.name as arrname, arr.lat AS arrlat, arr.lng AS arrlng
				FROM ' . TABLE_PREFIX .'acarsdata a
				LEFT JOIN '.TABLE_PREFIX.'aircraft c ON a.`aircraft`= c.`registration`
				LEFT JOIN '.TABLE_PREFIX.'pilots p ON a.`pilotid`= p.`pilotid`
				LEFT JOIN '.TABLE_PREFIX.'airports AS dep ON dep.icao = a.depicao
				LEFT JOIN '.TABLE_PREFIX.'airports AS arr ON arr.icao = a.arricao 

O pior é que eu não manjo muito de SQL então eu gostaria de pedi ajudar de vocês, eu gostaria de unir nessa tabela o seguinte comando:

SELECT * FROM acars_position WHERE `pilotid`= $pilotid and flightnum=`$flightnum`

Alguém poderia me ajuda, já que eu não manjo nada de SQL :upset:

Compartilhar este post


Link para o post
Compartilhar em outros sites

O negócio é entender o que são estes campos, qual o relacionamento entre as tabelas assim como é feito no primeiro LEFT JOIN [inline]LEFT JOIN '.TABLE_PREFIX.'aircraft c ON a.`aircraft`= c.`registration`[/inline], o campo registration da tabela aircraft é igual ao campo aircraft da tabela acarsdata.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O negócio é entender o que são estes campos, qual o relacionamento entre as tabelas assim como é feito no primeiro LEFT JOIN [inline]LEFT JOIN '.TABLE_PREFIX.'aircraft c ON a.`aircraft`= c.`registration`[/inline], o campo registration da tabela aircraft é igual ao campo aircraft da tabela acarsdata.

 

Olha só o código que eu fiz, porém não funcionou:

SELECT a.*, c.name as aircraftname,
					p.code, p.pilotid as pilotid, p.firstname, p.lastname,
					dep.name as depname, dep.lat AS deplat, dep.lng AS deplng,
					arr.name as arrname, arr.lat AS arrlat, arr.lng AS arrlng
				FROM ' . TABLE_PREFIX .'acarsdata a
				LEFT JOIN '.TABLE_PREFIX.'aircraft c ON a.`aircraft`= c.`registration`
				LEFT JOIN '.TABLE_PREFIX.'pilots p ON a.`pilotid`= p.`pilotid`
				LEFT JOIN '.TABLE_PREFIX.'airports AS dep ON dep.icao = a.depicao
				LEFT JOIN '.TABLE_PREFIX.'airports AS arr ON arr.icao = a.arricao
				LEFT JOIN               acars_position c ON a.`pilotid`= c.`pilotid`

:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta achar o relacionamento para o flightnum.

 

Entenda o que é este '.TABLE_PREFIX.' que existe antes de cada tabela, o ideal é não sair do padrão, deve haver uma lógica por trás disso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta achar o relacionamento para o flightnum.

 

Entenda o que é este '.TABLE_PREFIX.' que existe antes de cada tabela, o ideal é não sair do padrão, deve haver uma lógica por trás disso.

 

o '.TABLE_PREFIX.' é apena o prefixo da tabela no caso o valor é mercSi então ficaria mercSi_tabela, só que essa tabela eu não adicionei prefixo, por isso não entraria o '.TABLE_PREFIX.'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então está certo. Mudou o relacionamento para funcionar com o flightnum?

 

Então mano, até agora não manipulei nada, só que na hora de me retornar o JSON quando eu incluo o: LEFT JOIN acars_position c ON a.`pilotid`= c.`pilotid` ele me retorna nulo, aí quando apago essa linha me retorna os valores normalmente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta fazer a consulta no banco de dados, depois que a consulta estiver certa, passe para o código.

 

Coloquei este código:

SELECT a.*, c.name as aircraftname,
					p.code, p.pilotid as pilotid, p.firstname, p.lastname,
					dep.name as depname, dep.lat AS deplat, dep.lng AS deplng,
					arr.name as arrname, arr.lat AS arrlat, arr.lng AS arrlng
				FROM phpvms_acarsdata a
				LEFT JOIN phpvms_aircraft c ON a.`aircraft`= c.`registration`
				LEFT JOIN phpvms_pilots p ON a.`pilotid`= p.`pilotid`
				LEFT JOIN phpvms_airports AS dep ON dep.icao = a.depicao
				LEFT JOIN phpvms_airports AS arr ON arr.icao = a.arricao
				LEFT JOIN               acars_position c ON a.`pilotid`= c.`pilotid`

e recebi o erro: #1066 - Not unique table/alias: 'c'

Compartilhar este post


Link para o post
Compartilhar em outros sites

{Use a citação somente quando for necessário, como está respondendo sempre ao post anterior, não há a necessidade}

 

Este erro ocorreu porque utilizou a letra 'c' a ser interpretada sendo a tabela acars_position, mas a letra 'c' já está sendo usada para phpvms_aircraft, assim como phpvms_acarsdata usa a letra 'a', phpvms_pilots usa a letra 'p', phpvms_airports usa 'dep', e phpvms_airports usa 'arr', coloque qualquer outra, pode ser 'b'.

 

Me diga, dentro de alguma destas tabelas consta o campo flightnum além da tabela acars_position?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.