Cita:
Iniciado por jurena gemeli16,
antes de sugerirte nada, te haré algunas aclaraciones. Entiendo perfectamente la necesidad de tener un número consecutivo, que junto con las otras dos claves formarían una clave compuesta en la tabla documentos, pero lo que no comprendo es por qué quieres generar ese número en una consulta con SELECT. Eso no insertará el valor en la tabla. Necesitas programación para buscar primero el número más alto insertado para esa área y tipo de documento en esa misma tabla, y a continuación insertar el valor superior. Luego te bastará con hacer un select con sus INNER JOIN para mostrarlo.
Por otra parte, no nos has dicho si realmente esos tres valores van a ser una clave primaria compuesta, que sería lo lógico, y no volver a cargar el valor de dos campos más algo en el primero. Es decir que en Clave de documentos no cargarías por ej. PR-AA-1, sino simplemente 1.
Tampoco nos dices si el borrado de un registro en esa última tabla conllevaría renumerar de nuevo todos los de esa área y tipo de documento.
No olvides que para almacenar el dato tienes que insertarlo antes, y es en ese momento de insertar cuando controlas qué número almacenar para ese documento de un área y tipo de documento determinado. Cosa distinta es que no quieras insertarlo, sino que desees generarlo al vuelo con no sé qué objetivo. Para eso tendrías que hacer algo parecido a lo que propones pero sobre una subconsulta. Nada nos dices sobre cuál es el criterio para ordenar, pero por lo que veo es el orden de inclusión en la tabla. Acláranos un poco más sobre ese número y para qué lo usaras.
Ok Gracias por responder, lo que estoy realizando es lo siguiente
tengo dos select donde cada uno de ellos me toma datos de tablas en mysql, esto lo estoy realizando con php
Código HTML:
Ver original<select name="Documentos" id="Documentos" > <?php do { ?>
<option value="<?php echo $row_Rs3["Clave"]?>">
<?php echo $row_Rs3["Nombre"]?> </option> <?php } while ($row_Rs3 = mysql_fetch_assoc($Rs3)); ?>
<td width="120"> </td> <td bgcolor="#0E2F7A" class="tittab">Area
</td> <td><select name="Area" id="Area" onchange="MM_jumpMenu('parent',this,0)" > <?php do { ?>
<option value="<?php echo $row_Rs4["clave"]?>" >
<?php echo $row_Rs4["Nombre"]?> </option> <?php } while ($row_Rs4 = mysql_fetch_assoc($Rs4)); ?>
al tomar los dos datos de forma automática quisiera que me los mandara a un textbox dentro de la misma pagina, pero como todavía no eh podido ver como hacerle, estoy mandando los datos a otra pagina y ejecuto mi query
Código PHP:
<?php
require_once('conexion.php');
$Documentos=$_REQUEST["Doc"];
$Area=$_REQUEST["Area"];
$query_Rs1= "'SELECT @conse:=@conse+1 AS conse, CONCAT(d.Clave,"-",a.Clave,"-",@conse) as Cadena, a.Clave, d.Clave FROM (SELECT @conse:=0) r ,Area a, DocumentosTipo d, Documentos o WHERE a.IdArea=o.area AND d.IdDocTipo=o.IdDocTipo AND a.clave= '$Area' AND d.Clave='$Documentos'";
$Rs1 = mysql_query($query_Rs5, $conexion) or die(mysql_error());
$row_Rs1 = mysql_fetch_assoc($Rs5);
$cadena=$row_Rs['Cadena'];
$con=$row_Rs['conse'];
echo $con;
?>
desde php no me manda nada ya que quiero que meimprima el resultado y me manda este error "Query was empty" y si lo ejecuto directo en mysql me da lo que quiero de esta forma
conse |Cadena |Clave |Clave
1 |PR-AA-1 | AA | PR
La cuestión esto es porque no me lo muestra en php y como validar para que me de el consecutivo que deberia de llevar dependiendo la combinación de claves