Php/Mysql query JOIN tra due tabelle

colomber

Utente Attivo
4 Dic 2012
232
1
18
Salve ho un problema con una JOIN tra queste due tabelle:

1° TABELLA NOME: DISCUSSIONE

id_discussione
titolo_discussione
datacreazione_discussione
autore _discussione

2° TABELLA NOME: RISPOSTA

id_risposta
id_discussione
risposta
datacreazione_risposta
autore _risposta


Devo recuperare id_discussione, titolo_discussione, datacreazione_discussione, autore _discussione da tabella DISCUSSIONE e ordinarli in base alla datacreazione_risposta più recente.

Qualcuno può aiutarmi?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
provata su ms ssql sembra corretta (no errori di sintassi)
PHP:
SELECT
   d.id_discussione
  ,d.titolo_discussione
  ,d.datacreazione_discussione
  ,d.autore_discussione
FROM discussione d
LEFT JOIN risposta r
ON d.id_discussione=r.id_discussione
ORDER BY r.datacreazione_risposta DESC

ma forse non ho capito bene .... quale risultato ti serve
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
questa è una soluzione con risultato diverso
PHP:
SELECT
   x.id_discussione
  ,x.titolo_discussione
  ,x.datacreazione_discussione
  ,x.autore_discussione
FROM
(
  SELECT
     d.id_discussione
    ,d.titolo_discussione
    ,d.datacreazione_discussione
    ,d.autore_discussione
    ,MAX(r.datacreazione_risposta) as datacreazione_risposta
  FROM discussione d
  LEFT JOIN risposta r
  ON d.id_discussione=r.id_discussione
  GROUP BY
     d.id_discussione
    ,d.titolo_discussione
    ,d.datacreazione_discussione
    ,d.autore_discussione
) x
ORDER BY x.datacreazione_risposta DESC
 

colomber

Utente Attivo
4 Dic 2012
232
1
18
riporta il testo dell'errore per cortesia

la prima query son riuscita a farla funzionare senza gli AS non andava, l ordinamento è ok, c'è un problema però mi riporta le discussioni duplicate ad esempio la discussione X ha 10 risposte, la query mi riporta la discussione X 10 volte
 
Ultima modifica:

colomber

Utente Attivo
4 Dic 2012
232
1
18
mi sto sciogliendo :) ma non funziona... ma provare a modificare la prima?

query d.id_discussione=r.id_discussione è ok d.id_discussione è 1 solo r.id_discussione é invece presente in ogni risposta della discussione se una discussione ha 5 risposte la query mi restituisce 5 volte lo stesso risultato.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
la seconda è la prima modificata,
ma tu ti stai sciogliendo, io vorrei invece capirti quando scrivi

"ma non funziona"

ti rifaccio le domande,
come la prima senza gli AS ????
hai perso per strada la x ????
hai dimenticato una parentesi ????
il copia incolla è terminato male ?????
si è spento il pc mentre la eseguivi ????
 

colomber

Utente Attivo
4 Dic 2012
232
1
18
non funzione ne e con gli as, il copia incolla non è andato male, risultato non funziona..
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
non funzione ne e con gli as, il copia incolla non è andato male, risultato non funziona..
capisco la tua rimostranza "non funziona"
capisco meno perché non spieghi il motivo per cui non funziona,
siccome non vorrei spendere altro tempo per questa banalità,
questi sono i risultati delle due query, con aggiunta la data della risposta per "capire"

prima query con le discussioni estratte più volte, ordinate per risposta più attuale
upload_2017-8-4_17-54-59.png


seconda query con discussioni estratte 1 sola volta e ordinate per risposta più attuale
upload_2017-8-4_17-57-30.png


certo, vengono estratte anche le discussioni che non hanno risposte
ma tu non hai precisato se ti servivano oppure no

ora, perché non funzionano ?

il copia incolla è terminato male ?????
si è spento il pc mentre la eseguivi ????
 
Ultima modifica:
  • Like
Reactions: colomber

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
potrebbe essere che nei campi "autore", per il caldo, dopo la parola "autore" hai messo uno spazio ?
mentre nei miei esempi l'ho tolto, per non incasinare un mondo che è già incasinato di suo
 

colomber

Utente Attivo
4 Dic 2012
232
1
18
Funziona perfettamente ti ringrazio sei veramente bravo non riesco a spiegare come mai prima non funzionava prima;

se volessi recuperare anche anche l'ultimo autore_risposta e relativa datacreazione _risposta come si fa?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
Funziona perfettamente non riesco a spiegare come mai prima non funzionava prima
neppure io, pur avendo sviluppato la query senza provarla,
provandola, ha funzionato al primo colpo ....
forse ti serviva la certificazione del funzionamento ? è un esercizio scolastico ?
cercherò nelle tue discussioni passate perché ricordo un precedente molto "uguale"

queste variazioni funzionano !
PHP:
....
  ,x.autore_discussione
  ,y.autore_risposta
  ,x.datacreazione_risposta
FROM
....
) x
LEFT JOIN risposta y
ON  x.id_discussione=y.id_discussione
AND x.datacreazione_risposta=y.datacreazione_risposta
ORDER BY x.datacreazione_risposta DESC, x.datacreazione_discussione DESC
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
PHP:
SELECT
   x.id_discussione
  ,x.titolo_discussione
  ,x.datacreazione_discussione
  ,x.autore_discussione
  ,y.autore_risposta
  ,x.datacreazione_risposta
FROM
(
  SELECT
     d.id_discussione
    ,d.titolo_discussione
    ,d.datacreazione_discussione
    ,d.autore_discussione
    ,MAX(r.datacreazione_risposta) as datacreazione_risposta
  FROM discussione d
  LEFT JOIN risposta r
  ON d.id_discussione=r.id_discussione
  GROUP BY
     d.id_discussione
    ,d.titolo_discussione
    ,d.datacreazione_discussione
    ,d.autore_discussione
) x
LEFT JOIN risposta y
ON  x.id_discussione=y.id_discussione
AND x.datacreazione_risposta=y.datacreazione_risposta
ORDER BY x.datacreazione_risposta DESC, x.datacreazione_discussione DESC

" ,x.datacreazione_risposta" se da fastidio, può essere eliminata dalla select

prima della "group by" potrebbero essere incluse clausole "where" per ridurre il set estratto
(esempio, limiti di date)
 

colomber

Utente Attivo
4 Dic 2012
232
1
18
funziona perfettamente!

per quanto riguarda x.datacreazione_risposta formattavo la data in questo modo dopo la prima select:

DATE_FORMAT(datacreazione_risposta, '%d-%m-%Y %H:%i') AS ddatacreazione_risposta

ho provato ad aggiunegre le x ma non funziona

DATE_FORMAT(x.datacreazione_risposta, '%d-%m-%Y %H:%i') AS x.ddatacreazione_risposta



al massimo la gestisco sull'output la converto da testo in data e bon
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
C Php/Mysql query JOIN tra tabelle PHP 4
booklisa MYSQL e PHP Query e sottoquery PHP 3
M [PHP - MYSQL] Mantenere filtro query in tabelle paginate PHP 3
G problema query mysql in php PHP 5
felino [PHP][MySQL] Errore nella query PHP 6
G Inserimento loop in una INSERT query in PHP e MySQL PHP 2
L filtri di query [php-mysql] PHP 6
A [RISOLTO]Come generare query dinamica PHP-MYSQL PHP 2
B problema query mysql php PHP 1
L PHP: problema con query mysql. PHP 3
A Indicizzare i risultati di una query Mysql con php PHP 0
B Aiuto query mysql in php PHP 1
S Autocompletamente con jQuery, PHP e MySQL - Problema con le query PHP 7
neo996sps [PHP + MySQL + Server Linux] Upload semi riuscito e query non eseguite PHP 2
D query con mysql, checkbox e php PHP 8
K Strano errore in una query mysql da php PHP 5
L [PHP & MySQL]Query con funzioni matematiche PHP 12
M Query php select mysql PHP 12
S Query MYSQL in php PHP 3
A [MYSQL+PHP]Non riesco a fare la query!!!Penso sia semplice.. PHP 1
M Query MYSql PHP PHP 2
J query con php su mysql PHP 1
Z Invio query da php su db mysql PHP 6
P Codifica caratteri speciali mysql php PHP 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Ricreare struttura php+mysql su Xampp Apache 0
M Array associativi php su 2 campi mysql PHP 10
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
Z MySql injection PHP PHP 1
D problema php mysql PHP 1
D problema php mysql PHP 1
L Google chart php mysql PHP 2
L Aiuto per programma web php/mySQL PHP 2
S Problemi delle funzioni eliminate con PHP e MySQL PHP 4
C Aiuto compiuto scuola PHP/MySQL PHP 2
G Problema caricamento tabelle MySql da PhP PHP 0
L update tabelle in php mysql [risolto] PHP 6
F Passare una variabile php dal DB mysql alla pagina PHP 3
B Fare calcoli con php da tabella mysql PHP 2
D [MySQL] [PHP] SQL andare da capo MySQL 0
P [OFFRO] Realizzazione siti web in PHP/MYSQL, responsive e Ottimizzati SEO Offerte e Richieste di Lavoro e/o Collaborazione 0
Tommy03 Firebase o PHP+Mysql? Sviluppo app per Android 0
pjtertdj Visualizzazione dati in php da mysql con funzione matematica in javascript PHP 1
E Cerco programmatore PHP/Mysql - retribuito Offerte e Richieste di Lavoro e/o Collaborazione 0
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
Z Gestionale in Php/mysql: Quanto farsi pagare? Aiuto! Discussioni Varie 0

Discussioni simili