Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [guru a me] differenza left join tra MySQL: 5.0.67-community e

    'sera a tutti,
    'sera ai guru,
    'sera ai semi-gniubbi (come me)



    --------------------------------------SITUAZIONE
    il db è composto tra tre tabelle:

    codice:
    online
    (idutente,ora_ingresso,ora_uscita)
    
    utenti
    (idutente,nome,cognome)
    
    ordini
    (idordine,tipo,quantita)
    la query sotto osservazione fa il controllo degli ordini relativo agli utenti online.
    per ogni record di ordini controlla che l'utente sia online ed in caso ne prende i dati.

    la tupla di risultati su ordini da sempre almeno 2-3 righe: quindi ci saranno sempre almeno 2-3 interrogazioni sulla online di tipo left join.

    ---------------------------------------------------- PROBLEMA:
    se faccio girare la query su un server che monta MySQL client: 4.1.20 la query funziona correttamente. (e l'ha fatto per 10 mesi...)

    Se invece, la richiamo su un altro server dove ho caricato lo stesso database, con MySQL: 5.0.67 la query non va e comincia a restituire errori sui campi e salta tutto.

    ------------------------------------------------------ IN SINTESI:

    come posso fare ad ottenere una tupla con 4 interrogazioni alla stessa tabella ?
    nella precednete versione la query interrogava facendo

    utente_uno.online
    utente_due.online
    utente_tre.online
    utente_quattro.online

    qui invece pare che la tabella si possa interrogare solo una volta in tutta la query..


    voi che ne pensate??
    Una forte determinazione ad esser felici vi aiuterà

  2. #2
    certo che per indovinare la query che esegui bisogna avere qualche grado in piu' di un semplice guru.

    4.1 e 5.0 sono "abbastanza" compatibili tra loro. Forse e' un semplice problema di una diversa impostazione di sql-mode

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    posterò la query nel pomeriggio di domani (prima purtroppo non ne avrò modo)..
    by the way, l'errore generato è il #1054, ora guardo sul manuale
    Una forte determinazione ad esser felici vi aiuterà

  4. #4
    SANTO MANUALE !!!


    allora ho trovato la soluzione per rendere compatibili le query left join da Mysql 4 a Mysql 5:


    codice:
    ...FROM table1 as t, table2 as t2, ....
    diventa
    codice:
    .. FROM (table1 t, table2 t2, ....) ....
    mentre

    codice:
    ...LEFT JOIN .... ON t.id = t2.id
    diventa

    codice:
    ... LEFT JOIN .... ON (t.id=t2.id)
    Una forte determinazione ad esser felici vi aiuterà

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.