Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555

    Colonna ambigua in query

    Ragazzi,

    in questa query

    $query = mysql_query("SELECT ordini.*, sum(numero) AS vendite, eventi.* from ordini, eventi WHERE event_id ='".$_GET['id']."'") or die( mysql_error() . "
    " . $sql);

    mi dice che

    Colonna: 'event_id' di where clause e` ambigua

    perché?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    In pratica dalle due tabelle ordini ed eventi vorrei estrarre questo:

    dalla tabella ordini mi serve solo il campo numero.
    dalla tabella eventi mi servono tutti i dati.

    Questo dove il campo event_id è uguale a $_GET[id]

    (ovviamente il campo event_id è comune ad entrambe le tabelle)

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Nessun suggerimento?

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ragazzi non ne vengo a capo.
    Qualcuno può dare uno sguardo al problema?

  5. #5
    Originariamente inviato da marckhh
    Ragazzi non ne vengo a capo.
    Qualcuno può dare uno sguardo al problema?
    devi specificare la tabella. Che i dati siano gli stessi lo sai tu, ma non mysql....

    codice:
    $query = mysql_query("SELECT ordini.*, sum(numero) AS vendite, eventi.* 
               from ordini, eventi 
               WHERE ordini.event_id = '{$_GET['id']}' ) 
               or die( mysql_error() . "
    " . $sql);

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

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ora mi esce fuori questa scritta:

    Il mescolare funzioni di aggregazione (MIN(),MAX(),COUNT()...) e non e` illegale se non c'e` una clausula GROUP BY

    Se provo ad aggiungere GROUP BY event_id mi da nuovamente che la colonna event_id è ambigua


  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ora ho provato cosi:

    GROUP BY eventi.event_id e il risultato mi da un totale ripetuto. Cioè:

    Biglietti venduti
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7
    7


  8. #8
    devi specificare i campi che sono referenziati nella join.

    codice:
    $query = mysql_query("SELECT *, sum(numero) AS vendite 
               from ordini, eventi 
               WHERE ordini.event_id = eventi.eventi_id 
               and ordini.event_id = '{$_GET['id']}' 
               group by campo) 
               or die( mysql_error() . "
    " . $sql);
    campo = il raggruppamento deve avvenire sul campo che definisce quali sono i record da sottoporre alla somma

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

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Grazie piero,
    ho risolto il problema. Ma ho un altro problema su un Join. Ho queste tabelle:

    CREATE TABLE `eventi` (
    `event_id` int(5) unsigned NOT NULL auto_increment,
    `organizzatore_id` int(3) NOT NULL,
    `evento` text NOT NULL,
    `luogo` text NOT NULL,
    `giorno` int(2) NOT NULL default '',
    `mese` int(2) NOT NULL default '',
    `anno` int(4) NOT NULL default '',
    `ora` int (4) NOT NULL default '',
    `oraporte` time NOT NULL,
    `descrizione` text NOT NULL,
    `biglietti` int(3),
    `disponibilita` int(3),
    `prezzo` decimal (5,2),
    `comunicazioni` text NOT NULL,
    `autore` varchar(50) NOT NULL default '',
    `data` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
    `nome` varchar(50) NOT NULL default '',
    `size` varchar(25) NOT NULL default '',
    `type` varchar(25) NOT NULL default '',
    `immagine` longblob NOT NULL,
    `pub` int(1) NOT NULL default '0',
    PRIMARY KEY (`event_id`)
    )

    CREATE TABLE `ordini` (
    `ordine_id` int(5) NOT NULL auto_increment,
    `utente_id` int(5) NOT NULL,
    `event_id` int(5) NOT NULL,
    `numero` int(5),
    `totale` decimal (5,2),
    `data` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
    PRIMARY KEY (`ordine_id`)
    )

    CREATE TABLE `utenti` (
    `utente_id` int(3) NOT NULL auto_increment,
    `username` varchar(30) NOT NULL default '',
    `password` varchar(34) NOT NULL,
    `confermapassword` varchar(34) NOT NULL,
    `nome` varchar(30) NOT NULL default '',
    `cognome` varchar(30) NOT NULL default '',
    `giorno` int(2) NOT NULL default '',
    `mese` int(2) NOT NULL default '',
    `anno` int(4) NOT NULL default '',
    `cap` int(10) NOT NULL default '',
    `provincia` varchar(30) NOT NULL default '',
    `indirizzo` varchar(30) NOT NULL default '',
    `civico` int(5) NOT NULL default '',
    `mail` char(255) NOT NULL default '',
    `data` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
    `ip` char(15) NOT NULL default '',
    PRIMARY KEY (`utente_id`),
    UNIQUE KEY `id` (`utente_id`),
    KEY `id_2` (`utente_id`)
    )

    Praticamente vorrei che un determinato organizzatore potesse visualizzare gli eventi che ha inserito in database e di questi sapere tutti i dati relativi all'utente che ha effettuato un acquisto per quel determinato evento.

    Ora, spero che le tabelle siano collegate adeguatamente. Ho provato questa select con Join:

    SELECT utenti.*, eventi.*, ordini.*,
    FROM eventi
    INNER JOIN ordini ON ordini.utente_id = utenti.utente_id
    INNER JOIN eventi ON eventi.event_id = ordini.event_id
    WHERE eventi.event_id ='".$_GET['id']."' Order by event_id Desc

    ma mi viene fuori questo errore

    Errore di sintassi nella query SQL vicino a 'FROM eventi INNER JOIN ordini ON ordini.utente_id = utenti.utente_id INNER JO' linea 2

    perchè? Dove sbaglio= O forse manca qualche collegamento tra tabelle?

  10. #10
    e chi lo sa.... per ora hai solo una virgola di troppo prima del FROM...

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

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.