Como ligar una consulta

Hola…

Necesito ayuda con esto realmente no se como hacerlo o si se puede…voy a tratar de explicarlo detallado porque ni yo misma me entiendo… Este el código del search


public function search()

	{

		$criteria=new CDbCriteria;


		$criteria->compare('Claveprim',$this->Claveprim);

		$criteria->compare('Etiqueta',$this->Etiqueta,true);

		$criteria->compare('OC',$this->OC,true);

		$criteria->compare('Tipo',$this->Tipo,true);

		$criteria->compare('Placa',$this->Placa,true);

		$criteria->compare('Serial',$this->Serial,true);

		$criteria->compare('Marca',$this->Marca,true);

		$criteria->compare('Modelo',$this->Modelo,true);

		$criteria->compare('Observaciones',$this->Observaciones,true);


		return new CActiveDataProvider(get_class($this), array(

			'criteria'=>$criteria,

		));

	}

}

Explico que hace mi tabla: En el campo tipo puedo escojer si es CPU,MONITOR; PORTATIL y les doy una etiqueta cualquiera; si el escojo CPU la etiqueta es la misma del MONITOR…

Ahora lo que quiero hacer es ligar la busqueda de monitor y cpu que cuando yo digite alguno de los dos me los traiga ya que estos estan realacionados por la etiqueta q sera la misma.

Espero haberme explicado bien…

Gracias…quedo atenta a cometarios.

Vamos otra vez… mas claro q no entendi porq dices q el campo tipo puede tener tiene etiquetas repetidas… ??

Jajaja Yo sabia…Te doy un ejemplo mas especifico, adjunto imagen de lo que muestra mi busqueda…y las etiquetas son iguales porque a si se maneja…1493

Ejemplo.JPG

Lo que quiero es que si yo busco el serial y este es de un MONITOR me traiga la CPU ya que las etiquetas son iguales o si busco el serial del MONITOR me traiga la CPU… como puedo ligarlos…

Gracias espero haberme explicado mejor…

pues podrias hacer un "GROUP BY" con el $criteria… mmm, algo como


$criteria->group = "t.etiqueta";

O como sea que se llame el atributo en la definicion de tu tabla

Que pena pero con eso solo me muestra uno de los dos campos que tienen como etiqueta LH45, lo que yo kiero es cuando los busque me los traiga, lo siento pero no se como explicarme mejor…

No estoy seguro, pero me suena a que no se puede hacer eso que intentas con una sola consulta… antes debes de hacer una subconsulta… Por ej…




//El primer query solamente seria para traer una etiqueta

SELECT t.etiqueta FROM equipo t WHERE t.serial LIKE ('%pollito2%')


//Este segundo query toma el valor de la etiqueta encontrada y busca similitudes

SELECT * FROM equipo e 

WHERE e.etiqueta = (

  SELECT t.etiqueta

  FROM equipo t

  WHERE t.serial LIKE ('%pollito2%')

)

Mil gracias por tu respuesta…pero mira me dieron esta opcion…me parece la mas comoda no se ¿?


array(

		'name'=>'Etiqueta',

		'filter'=>CHtml::listData( Entregas::model()->findAll( new CDbCriteria( array( 'group'=>'Etiqueta' ) )) , 'Etiqueta' , 'Etiqueta')),

Y hace lo que quiero si busco un serial me los trae a los dos…

que interesante… postea el resto del codigo para ver q debia de hacer … :D

Upsss lo siento todavía no hace lo que kiero el me filtra por etiqueta y ahí si me trae los dos datos, pero si busco por serial o Cpu solo me muestra uno…no se como unir esos dos campos…apenas sepa como hacerlo lo posteo :)