Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

PARTIAL y amount??

Estas en el tema de PARTIAL y amount?? en el foro de Mysql en Foros del Web. Hola gente, tengo una duda que he buscado por la red pero no encuentro, y es que me he topado con esta consulta. Código PHP: ...
  #1 (permalink)  
Antiguo 26/09/2009, 11:55
 
Fecha de Ingreso: octubre-2007
Mensajes: 57
Antigüedad: 16 años, 6 meses
Puntos: 0
Pregunta PARTIAL y amount??

Hola gente,

tengo una duda que he buscado por la red pero no encuentro, y es que me he topado con esta consulta.

Código PHP:
$query "select orderid from orders where
               customerid = '" 
$customerid "' and
               amount > (" 
$_SESSION['total_price'] . "-.001) and
               amount < (" 
$_SESSION['total_price'] . "+.001) and
               date = '" 
$date "' and
               order_status = 'PARTIAL' and
               ship_name = '" 
$ship_name "' and
               ship_address = '" 
$ship_address "' and
               ship_city = '" 
$ship_city "' and
               ship_state = '" 
$ship_state "' and
               ship_zip = '" 
$ship_zip "' and
               ship_country = '" 
$ship_country "'"
y no se que funcion o que significa el valor PARTIAL.
por otra parte tampoco se que función hace amount

la tabla de la BD es la siguiente.
Código PHP:
create table orders
(
  
orderid int unsigned not null auto_increment primary key,
  
customerid int unsigned not null,
  
amount float(6,2),
  
date date not null,
  
order_status char(10),
  
ship_name char(60not null,
  
ship_address char(80not null,
  
ship_city char(30not null,
  
ship_state char(20),
  
ship_zip char(10),
  
ship_country char(20not null
)
type=InnoDB
DEFAULT CHARACTER SET utf8 
COLLATE utf8_general_ci

Saludos
  #2 (permalink)  
Antiguo 26/09/2009, 16:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: PARTIAL y amount??

Amount es evidentemente un campo de la tabla ORDERS, y "PARTIAL" un valor que puede contener el campo order_status.
Por su lado, los campos empezados con "ship" hacen referencia al destinatario del pedido.
En realidad no se puede sacar ninguna conclusión útil de esta consulta ni de esta tabla sin saber a qué sistema comercial pertenece (amount es el valor total o suma de algo, y order_status evidentemente un campo de control que indica el estado del pedido), ya que se trata de algo diseñado para un propósito definido.

¿Qué es en realidad lo que andabas buscando?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 27/09/2009, 06:38
 
Fecha de Ingreso: octubre-2007
Mensajes: 57
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: PARTIAL y amount??

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Amount es evidentemente un campo de la tabla ORDERS, y "PARTIAL" un valor que puede contener el campo order_status.
Por su lado, los campos empezados con "ship" hacen referencia al destinatario del pedido.
En realidad no se puede sacar ninguna conclusión útil de esta consulta ni de esta tabla sin saber a qué sistema comercial pertenece (amount es el valor total o suma de algo, y order_status evidentemente un campo de control que indica el estado del pedido), ya que se trata de algo diseñado para un propósito definido.

¿Qué es en realidad lo que andabas buscando?
Es verdad , no me había fijado en lo de amount, amount es entonces la cantidad total de precio de un pedido. Order_status, hace referencia al estado del pedido , que supongo que será para comprobar si se ha tramitado aun o no.

el sistema hace referencia a una tienda de online. y la tabla orders es donde se almacenan los datos de pedidos.

lo que no entiendo muy bien es porque hace lo siguiente para consultar el orderid:

Código PHP:
amount > (" . $_SESSION['total_price'] . "-.001) and 
               
amount < (" . $_SESSION['total_price'] . "+.001
pudiendo hacerlo así directamente:
Código PHP:
amount '". $_SESSION['total_price']."' 
$_SESSION['total_price'] es el precio total del carrito de compra que se almacena en una variable de sesion

pongo todo el script completo de la función que inserta los datos de un pedido en la BD

Código PHP:
function insert_order($order_details)
{
    
// extract order_details out as variables
    // extraer los detalles del pedido como variables
    
extract($order_details);

    
// set shipping address same as address
    // configura dirección de envío igual que dirección
    
if ((!$ship_name) && (!$ship_address) && (!$ship_city) && (!$ship_state) && (!$ship_zip) &&
        (!
$ship_country)) {
        
$ship_name $name;
        
$ship_address $address;
        
$ship_city $city;
        
$ship_state $state;
        
$ship_zip $zip;
        
$ship_country $country;
    }

    
$conn db_connect();

    
// we want to insert the order as a transaction
    // start one by turning off autocommit
    // queremos insertar el pedido como una transaccion
    // comenzar primero por poner a off autocommit
    // Un COMMIT significa que los cambios hechos en la transacción actual
    // se convierten en permanentes y se vuelven visibles para los otros usuarios.
    // Una sentencia SQL COMMIT o ROLLBACK termina la transacción vigente y
    // comienza una nueva. Ambas sentencias liberan todos los bloqueos InnoDB
    // que se establecieron durante la transacción vigente.
    
$conn->autocommit(false);

    
// insert customer address
    // insertar dirección personalizada
    
    // datos del comprador se consultan, customerid
    
$query "select customerid from customers where
            name = '" 
$name "' and address = '" $address "'
            and city = '" 
$city "' and state = '" $state "'
            and zip = '" 
$zip "' and country = '" $country "'";

    
$result $conn->query($query);

    if (
$result->num_rows 0) {
        
$customer $result->fetch_object();
        
$customerid $customer->customerid;
    } else {
        
// datos del comprador se introducen
        
$query "insert into customers values
            ('', '" 
$name "','" $address "','" $city "','" $state .
            
"','" $zip "','" $country "')";
        
$result $conn->query($query);

        if (!
$result) {
            return 
false;
        }
    }
    
// insert_id — Retorna el id autogenerado en la ultima consulta.
    
$customerid $conn->insert_id;

    
$date date("Y-m-d");

    
// se introducen los datos del pedido
    
$query "insert into orders values
            ('', '" 
$customerid "', '" $_SESSION['total_price'] . "', '" .
        
$date "', '" PARTIAL "',
             '" 
$ship_name "', '" $ship_address "', '" $ship_city .
        
"', '" $ship_state "',
             '" 
$ship_zip "', '" $ship_country "')";

    
$result $conn->query($query);
    if (!
$result) {
        return 
false;
    }

    
// orders es donde van almacenados los datos del pedido y el precio total de la compra
    // se consulta el orderid del pedido del cliente para introducirlo el order_items
    
$query "select orderid from orders where
               customerid = '" 
$customerid "' and
               amount > (" 
$_SESSION['total_price'] . "-.001) and
               amount < (" 
$_SESSION['total_price'] . "+.001) and
               date = '" 
$date "' and
               order_status = 'PARTIAL' and
               ship_name = '" 
$ship_name "' and
               ship_address = '" 
$ship_address "' and
               ship_city = '" 
$ship_city "' and
               ship_state = '" 
$ship_state "' and
               ship_zip = '" 
$ship_zip "' and
               ship_country = '" 
$ship_country "'";

    
$result $conn->query($query);

    if (
$result->num_rows 0) {
        
$order $result->fetch_object();
        
$orderid $order->orderid;
    } else {
        return 
false;
    }

    
// insert each book
    // order_items es donde se almacenan los datos de los articulos de un pedido , unidades, precio, isbn
    // primero se borra de esa tabla los datos de un id de pedido igual al nuevo pedido con ese mismo libro
    // despues se almacena los nuevos datos.
    
foreach ($_SESSION['cart'] as $isbn => $quantity) {
        
$detail get_book_details($isbn);
        
$query "delete from order_items where
              orderid = '" 
$orderid "' and isbn = '" $isbn "'";
        
$result $conn->query($query);
        
$query "insert into order_items values
              ('" 
$orderid "', '" $isbn "', " $detail['price'] . ", " $quantity ")";
        
$result $conn->query($query);
        if (!
$result) {
            return 
false;
        }
    }

    
// end transaction
    
$conn->commit();
    
$conn->autocommit(true);

    return 
$orderid;

y aqui la BD:

Código PHP:
create database book_sc DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

use 
book_sc;

create table customers
(
  
customerid int unsigned not null auto_increment primary key,
  
name char(60not null,
  
address char(80not null,
  
city char(30not null,
  
state char(20),
  
zip char(10),
  
country char(20not null
)
type=InnoDB
DEFAULT CHARACTER SET utf8 
COLLATE utf8_general_ci
;

create table orders
(
  
orderid int unsigned not null auto_increment primary key,
  
customerid int unsigned not null,
  
amount float(6,2),
  
date date not null,
  
order_status char(10),
  
ship_name char(60not null,
  
ship_address char(80not null,
  
ship_city char(30not null,
  
ship_state char(20),
  
ship_zip char(10),
  
ship_country char(20not null
)
type=InnoDB
DEFAULT CHARACTER SET utf8 
COLLATE utf8_general_ci
;

create table books
(
   
isbn char(13not null primary key,
   
author char(80),
   
title char(100),
   
catid int unsigned,
   
price float(4,2not null,
   
description varchar(255)
)
type=InnoDB
DEFAULT CHARACTER SET utf8 
COLLATE utf8_general_ci
;

create table categories
(
  
catid int unsigned not null auto_increment primary key,
  
catname char(60not null
)
type=InnoDB
DEFAULT CHARACTER SET utf8 
COLLATE utf8_general_ci
;

create table order_items
(
  
orderid int unsigned not null,
  
isbn char(13not null,
  
item_price float(4,2not null,
  
quantity tinyint unsigned not null,
  
primary key (orderidisbn)
)
type=InnoDB
DEFAULT CHARACTER SET utf8 
COLLATE utf8_general_ci
;

create table admin
(
  
username char(16not null primary key,
  
password char(40not null
)
type=InnoDB
DEFAULT CHARACTER SET utf8 
COLLATE utf8_general_ci
;

grant selectinsertupdatedelete
on book_sc
.*
to book_sc@localhost identified by 'password'
saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:04.