2010-01-15 9 views
3

Ma requête est de lancer une erreur commerequête select MySQL Erreur

select id,cHospital from med_patient where cHospital is not null union 
select id,cHospital1 from med_patient where cHospital1 is not null union 
select id,cHospital2 from med_patient where cHospital2 is not null order by 1 

L'erreur est

Notice: Undefined index: cHospital1 dans F: \ wamp \ www \ MMR-finale \ admin \ all_hospital_list.php sur la ligne 97

Notice: Undefined index: cHospital2 dans F: \ wamp \ www \ MMR-finale \ admin \ all_hospital_list.php sur la ligne 98

Non ice: Indéfini index: cHospital1 dans F: \ wamp \ www \ mmr-final \ admin \ all_hospital_list.php à la ligne 97

Indication: Indéfini index: cHospital2 dans F: \ wamp \ www \ mmr-final \ admin \ all_hospital_list.php sur la ligne 98

Indication: indice défini: cHospital1 dans F: \ wamp \ www \ mmr-finale \ admin \ all_hospital_list.php sur la ligne 97

Indication: indice défini: cHospital2 dans F: \ wamp \ www \ mmr-final \ admin \ all_hospital_list.php à la ligne 98

Indication: Index indéfini: cHospital1 dans F: \ wamp \ www \ mmr-final \ admin \ all_hospital_list.php à la ligne 97

Notice: Undefined index: cHospital2 dans F: \ wamp \ www \ MMR-finale \ admin \ all_hospital_list.php en ligne 98

Notice: Undefined index: cHospital1 dans F: \ wamp \ www \ mmr- finale \ admin \ all_hospital_list.php sur la ligne 97

Indication: indice défini: cHospital2 dans F: \ wamp \ www \ mmr-finale \ admin \ all_hospital_list.php sur la ligne 98

Indication: indice défini: cHospital1 dans F: \ wamp \ www \ mmr-final \ admin \ all_hospital_list.php à la ligne 97

e: Undefined index: cHospital2 dans F: \ wamp \ www \ MMR-finale \ admin \ all_hospital_list.php en ligne 98`

Et il est nul lancer la ligne.

Comment cette requête peut-elle être modifiée pour ne pas provoquer d'erreur?

+0

Le problème n'est pas la requête, mais le PHP. Pouvez-vous poster le fichier complet ou au moins plus du code environnant? – Tom

+0

http://pastebin.com/m4fbf313d – Bharanikumar

+0

je dis ce que j'essaie exactement .. voir j'ai trois champs, chospital, chospital1, chospital2, dans la table tbl1, j'ai environ 50 entrées de patients, certains patients peuvent avoir chostial1, chosptail2, certains patients ont un code chopsital, je veux rendre tout le code de la table tbl2, je ne veux pas de duplication dans mon outout, aussi pas de valeurs nulles .. – Bharanikumar

Répondre

0

Dans une requête UNION, les noms de colonnes doivent être identiques pour toutes les lignes. Il utilise donc les noms de colonnes de la première requête de l'union. Les noms de colonne dans les requêtes suivantes de l'union sont ignorés.

En d'autres termes, dans cette requête:

select id,cHospital from med_patient where cHospital is not null union 
select id,cHospital1 from med_patient where cHospital1 is not null union 
select id,cHospital2 from med_patient where cHospital2 is not null order by 1 

Les noms de colonnes sur toutes les lignes sont: id et cHospital.

Donc, dans votre code PHP, lorsque vous chercher le résultat comme un objet et essayer de faire référence à un champ de l'objet comme celui-ci:

$cHospital1 = $row->cHospital1; 
$cHospital2 = $row->cHospital2; 

L'objet n'a pas de champs par ces noms. Il n'a que $row->cHospital, même pour les lignes provenant des deuxième et troisième requêtes de l'union.

+0

le nombre de colonnes est le même savoir, ce que je dois changer ici – Bharanikumar

+0

Utilisez simplement $ row-> cHospital' pour toutes les lignes. –

+0

La requête est parfaite maintenant, je vois que j'ai, 1ère ligne comme nulle, comment éliminer cela .. – Bharanikumar

2

Ce ne sont pas des erreurs MySQL. Ce sont des erreurs PHP. Fondamentalement, vous essayez probablement d'utiliser des variables sans les déclarer d'abord. Assurez-vous de toujours déclarer vos variables avant de les utiliser. Cela vous fait moins envie d'avoir des erreurs.

+0

Salut merci pour le pointage..http: //pastebin.com/ m4fbf313d Veuillez regarder ,,, – Bharanikumar