Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555

    Inner join che non estrae i dati che voglio

    La seguente query:

    Codice PHP:
    SELECT ordini.*, sum(numeroridotti) AS venditeeventi.* 
    from ordinieventi 
    WHERE ordini
    .event_id '".$_GET['id']."' GROUP BY eventi.event_id 
    non mi estrae il campo "prezzoridotti" dalla tabella eventi. Questa la struttura della tabella:

    CREATE TABLE `eventi` (
    `event_id` int(5) unsigned NOT NULL auto_increment,
    `organizzatore_id` int(3) NOT NULL,
    `evento` text NOT NULL,
    `nomelocale` varchar(30) NOT NULL default '',
    `cittaevento` varchar(30) NOT NULL default '',
    `luogo` text NOT NULL,
    `oraporte` time NOT NULL,
    `dataevento` datetime NOT NULL default '0000-00-00 00:00:00',
    `descrizione` text NOT NULL,
    `bigliettiinteri` int(4),
    `bigliettiridotti` int(4),
    `disponibilitainteri` int(4),
    `disponibilitaridotti` int(4),
    `dirittoridotti` text NOT NULL,
    `biglietti` int(4),
    `disponibilita` int(4),
    `prezzointeri` decimal (5,2),
    `prezzoridotti` decimal (5,2),
    `prezzo` decimal (5,2),
    `tavoli` int(4),
    `disponibilitatavoli` int(4),
    `prezzotavoli` decimal (5,2),
    `comunicazioni` text NOT NULL,
    `autore` varchar(50) NOT NULL default '',
    `data` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
    `foto` varchar(50) NOT NULL default '',
    `size` varchar(25) NOT NULL default '',
    `type` varchar(25) NOT NULL default '',
    `immagine` longblob NOT NULL,
    PRIMARY KEY (`event_id`)
    )

    Ma la cosa assurda è un'altra. Come vedete nella query c'è la funzione SUM che estrae un campo dalla tabella "ordini". Esattamente il campo "numeroridotti". Altro non è che il numero di biglietti ridotti che viene acquistato da un utente (gli utenti possono essere più di uno, ecco perchè la funzione SUM). Per intenderci questa è la tabella ordini:

    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),
    `numerointeri` int(5),
    `numeroridotti` int(5),
    `numerotavoli` int(5),
    `totale` decimal (5,2),
    `data` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
    PRIMARY KEY (`ordine_id`)
    )

    Allora, se al posto di "numeroridotti" uso numero ed al posto di prezzoridotti uso "prezzo", va tutto ok. Se vado a stampare la variabile "$results['prezzoridotti']" mi da zero. Eppure in database è valorizzato!!!! Perchè accade?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Questa cosa è davvero strana. Apparentemente mi sembra non vi siano errori. Almeno che non vi sia qualcosa di errato nella query, voi che dite?

  3. #3
    Utente di HTML.it L'avatar di Graboid
    Registrato dal
    Oct 2004
    Messaggi
    619
    Penso che sia il Group By insieme alla funzione SUM che da il problema.

    Se togli il GROUP BY la query da i risultati che ti aspetti?

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Provo a controllare. Dici che sia quello? Come mai allora quando estraggo il valore "prezzo" me lo da e quando invece estraggo "prezzoridotti" insieme a "numeroridotti" (con SUM) mi fa il problema?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ho provato a levare la clausola ORDER BY, ma se la tolgo mi dice che:

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

    quindi non posso levarla. A questo punto credo che il problema non derivi dalla presenza di tale clausola....

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.