Signaler

Comparer les valeurs de deux colonnes d'une table [Résolu/Fermé]

Posez votre question merchou - Dernière réponse le 13 mars 2014 à 15:56 par merchou
Bonjour à tous !
Je suis nouveau dans les bases de données.
J'une table nommée coordab ayant 3 colonnes : IMSI, MDN, NUMF . Mon souci de savoir la requête qui permet de:
- Prendre chaque ligne de NUMF et comparer ses 7 derniers chiffres aux 7 derniers chiffres de chaque ligne de IMSI
- Là où ces 7 derniers chiffres sont égaux, il recupère cette ligne IMSI, et le MDN de cette ligne ainsi que la ligne NUMF testé.

Exemple:

------IMSI----------------------MDN----------------NUMF

624030743830010-------2373300002E-------2333000034
624030743830015-------2373300002S------2333830023
624030743830019-------237330000D1-------2333000015
624030743830023---2373300002N-----2333000084
624030743830000-------237330000DO-------2333000009

Résultats:

NUMF : 2333830023

IMSI : 624030743830023

MDN : 2373300002N


S'il vous plait aidez moi.

Merci d'avance.
Utile
+0
plus moins
Bonjour,

Un truc de ce genre peut-il te convenir ?
select t1.IMSI, t1.MDN, t2.NUMF
from nomtable t1
inner join (
    select distinct NUMF from nomtable
) t2 ON SUBSTRING(t2.NUMF, -7) = SUBSTRING(t1.IMSI, -7)


Xavier
Utile
+0
plus moins
Merci beaucoup pour votre AIDE.

J'excuse pour le silence, j'ai eu un problème de connexion depuis environ 1h.

Le code que vous m'avez envoyé fonctionne très bien.

Mais j'ai fait une erreur au niveau de ma question:

En fait NUMF se trouve dans une autre table de nom numero.

Comment je peux adapter votre requête à cette situation ?

S'il vous plait aidez moi encore.

Merci d'avance !
Reivax962 3085Messages postés jeudi 16 juin 2005Date d'inscription 9 novembre 2017 Dernière intervention - 13 mars 2014 à 13:58
Il suffit, a priori, de mettre le bon nom de table dans cette partie de la requête :
select distinct NUMF from nomtable
Utile
+0
plus moins
Voici mon code :

    <?php	
set_time_limit(0);
error_reporting(E_ALL ^ E_NOTICE);

	//Connexion à la BD
mysql_connect('localhost','root','');
mysql_select_db('gestnum');

$sql = 'select t1.IMSI, t1.MDN, t2.NUMF
from coordab t1
inner join (
    select distinct NUMF from numero
) t2 ON SUBSTRING(t2.NUMF, -7) = SUBSTRING(t1.IMSI, -7)';

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$i=0; 
// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) 
    {
	$i++; 
	// on affiche les résultats
	echo 'IMSI : '.$data['IMSI'].'<br />';
	echo 'MDN : '.$data['MDN'].'<br />';
	echo 'NUMF : '.$data['NUMF'].'<br /><br />';
    }
mysql_free_result ($req);
mysql_close ();

?>



Quand j'exécute ce code, j'obtiens l'erreur suivante:

Erreur SQL !
select t1.IMSI, t1.MDN, t2.NUMF from coordab t1 inner join ( select distinct NUMF from numero ) t2 ON SUBSTRING(t2.NUMF, -7) = SUBSTRING(t1.IMSI, -7)
Unknown column 'NUMF' in 'field list'


S'il vous plait aidez moi encore.
Reivax962 3085Messages postés jeudi 16 juin 2005Date d'inscription 9 novembre 2017 Dernière intervention - 13 mars 2014 à 14:59
Essaie ceci :
select distinct NUMF as NUMF from numero
Utile
+0
plus moins
Merci encore.

Je viens d'essayer, mais j'ai la même erreur:

Erreur SQL !
select t1.IMSI, t1.MDN, t2.NUMF from coordab t1 inner join ( select distinct NUMF as NUMF from numero ) t2 ON SUBSTRING(t2.NUMF, -7) = SUBSTRING(t1.IMSI, -7)
Unknown column 'NUMF' in 'field list'
Reivax962 3085Messages postés jeudi 16 juin 2005Date d'inscription 9 novembre 2017 Dernière intervention - 13 mars 2014 à 15:16
Tu es sûr du nom de la colonne NUMF ?
Utile
+0
plus moins
Voici la structure de mes deux tables:

 
-- phpMyAdmin SQL Dump
-- version 4.0.4
-- http://www.phpmyadmin.net
--
-- Client: localhost
-- Généré le: Jeu 13 Mars 2014 à 14:15
-- Version du serveur: 5.6.12-log
-- Version de PHP: 5.4.12
 
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
 
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
 
--
-- Base de données: 'gestnum'
--
CREATE DATABASE IF NOT EXISTS 'gestnum' DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE 'gestnum';
 
-- --------------------------------------------------------
 
--
-- Structure de la table 'coordab'
--
 
CREATE TABLE IF NOT EXISTS 'coordab' (
  'ida' int(10) NOT NULL AUTO_INCREMENT,
  'IMSI' char(15) NOT NULL,
  'MEID' char(14) NOT NULL,
  'ESN1' char(8) NOT NULL,
  'PUK1' char(8) NOT NULL,
  'AKY' char(16) NOT NULL,
  'MDN' char(13) NOT NULL,
  'NUMF' char(13) NOT NULL,
  PRIMARY KEY ('ida'),
  UNIQUE KEY 'coordab_IMSI' ('IMSI'),
  KEY 'ida' ('ida')
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=364552 ;
 
-- --------
 
--
-- Structure de la table 'numero'
--
 
CREATE TABLE IF NOT EXISTS 'numero' (
  'idnum' int(10) NOT NULL AUTO_INCREMENT,
  'num' char(13) NOT NULL,
  PRIMARY KEY ('idnum')
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
 
 
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Utile
+0
plus moins
S'il vous plait excusez moi, car l'erreur vient de moi même.
C'est plutôt num au lieu de NUMF, j'ai fait une confusion.

Tout marche bien maintenant.

Merci beaucoup Reivax962.

Vous m'avez beaucoup aidé.

Salut !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !