Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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:
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`
:(
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.
>
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.'
Então está certo. Mudou o relacionamento para funcionar com o flightnum?
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
Tenta fazer a consulta no banco de dados, depois que a consulta estiver certa, passe para o código.
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'
{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?
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.