Select Inner Join

Mógłby mi ktoś pomóc, ponieważ nie wiem jak użyć tego warunku w swoim projekcie…??




SELECT fee.feeId,fee.feeDesc, pupil_has_user.user_userId

FROM fee

INNER JOIN pupil_has_user

ON fee.pupil_has_user_id=pupil_has_user.pupil_pupilId



Próbowałem, ale nie działa:




$criteria = new CDbCriteria;

            $criteria->select = 'fee.*, pupilHasUser.user_userId ';

            $criteria->join = 'JOIN pupilHasUser on fee.pupil_has_user_id= pupilHasUser.user_userId';

            $resultSet    =    Fee::model()->findAll($criteria);



Czemu nie działa? Jeśli nie zmieniałeś domyślnego alias to powinieneś dać ‘t.’ zamiast 'fee.’.

Czy zadziała zależy od wersji Yii, której używa. Od wersji 1.1.13 nastąpiła pewna zmiana w aliasach, którą wyjaśnia następujący wpis z instrukcji aktualizacji[font=arial, verdana, tahoma, sans-serif][size=2]- Criteria modification in CActiveRecord::beforeFind() did not apply to the query when model was loaded in a relational context.[/size][/font]

Trochę to zmodyfikowałem i zadziałało




$criteria = new CDbCriteria;

                $criteria->select = 't.*, tu.* ';

                //$criteria->join = 'JOIN pupilHasUser on fee.pupil_has_user_id= pupilHasUser.user_userId';

                $criteria->join = 'JOIN pupil_has_user as tu ON tu.pupil_pupilId = t.pupil_has_user_id';

                $criteria->addCondition("t.pupil_has_user_id ='8'");

                $resultSet    =    Fee::model()->findAll($criteria);



Mówiąc zadziałało mam na myśli, że się nie wysypuję. Teraz czy mogłby mi ktoś pomóc jak wyświetlić połączone dane z tabeli pupil_has_user ?? Póki co osiągam:




$criteria = new CDbCriteria;

                $criteria->select = 't.*, tu.* ';

                $criteria->join = 'JOIN pupil_has_user as tu ON tu.pupil_pupilId = t.pupil_has_user_id';

                $criteria->addCondition("t.pupil_has_user_id ='4'");

                $resultSet    =    Fee::model()->findAll($criteria);

                //print_r($resultSet);

                

                $dd_data = array();

                

                //echo $resultSet->pupil_pupilId;

                foreach($resultSet as $result)

                {

                    echo $dd_data[$result->feeId] = 'Numer płatności '.$result->feeId.' Kwota: '.$result->number1;  

                    echo '<br />';

                    

                }



Nie wiem jak dołączyć do tego dane z drugiej tabeli …

np. pupilFullName, pupil_pupilId, user_userId