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

    [mysql] query innestate

    La seguente query mi da il seguente errore. Come risolvere?

    SELECT CLModulo, CLRiga, CLColonna, CLStato
    FROM celle
    LEFT JOIN (

    SELECT SCOrdine, OTIdCliente
    FROM scatole
    LEFT JOIN ordinitesta ON ( OTNumero = SCOrdine )
    WHERE (
    OTIdCliente = 'utente'
    AND SCStato = 'Archiviato'
    )
    ) ON ( SCOrdine = CLStato )
    LIMIT 0 , 30

    Messaggio di MySQL:

    #1248 - Every derived table must have its own alias
    è meglio tacere e far credere di essere stupido piuttosto che parlare e togliere ogni dubbio

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Devi aggiungere un alias alla SELECT interna (ad es. 'AS t').
    Tuttavia non capisco che senso abbia la join esterna, visto che non estrai niente da quella interna...

  3. #3
    SELECT CLModulo, CLRiga, CLColonna, CLStato
    FROM celle
    LEFT JOIN (

    SELECT SCOrdine, OTIdCliente
    FROM scatole
    LEFT JOIN ordinitesta ON ( OTNumero = SCOrdine )
    WHERE (
    OTIdCliente = 'utente'
    AND SCStato = 'Archiviato'
    ) AS t

    ) ON ( SCOrdine = CLStato )
    LIMIT 0 , 30

    Intendi questo?

    Mi da il seguente errore: :master:
    #1064 - 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 'AS t

    Cmq la query interna produce un risultato.
    è meglio tacere e far credere di essere stupido piuttosto che parlare e togliere ogni dubbio

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Prova a tenere 'AS t' dentro la parentesi.
    La query interna produrrà anche un risultato, ma nessuna colonna di quel risultato viene selezionata dalla query esterna. Ergo, che te ne fai?

  5. #5
    Ho combinato.
    Era giusto scrivere AS t fuori. Ma ancora fuori di una ).

    Comunque la query interna seleziona il campo SCOrdine che viene usato anche nella query esterna. Infatti ho ottenutoi i risultati che volevo.

    Grazie
    è meglio tacere e far credere di essere stupido piuttosto che parlare e togliere ogni dubbio

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da luqwe

    Era giusto scrivere AS t fuori. Ma ancora fuori di una ).
    Giusto... ho fagianato io

    Contento tu, contenti tutti. Comunque SCOrdine nella select esterna non c'è.

    Edit: Vedo che in realtà estrai il campo CLStato che viene usato per la join con SCOrdine. Il fatto è che trattandosi di una left join, non hai nessuna indicazione sulle reali corrispondenze fra le tabelle.

  7. #7
    infatti ho cambiato la query esterna con un RIGHT JOIN.

    Sembra andare.

    Dovrei fare un ripassino sulla differenza tra JOIN, LEFT JOIN e RIGHT JOIN che non mi è più molto chiaro.
    è meglio tacere e far credere di essere stupido piuttosto che parlare e togliere ogni dubbio

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.