Hallo Zusamen,
ich bin neu hier und hoffe, dass mir jemand helfen kann.
Ich versuche seit Tagen verzeifelt eine MySQl Abfrage zuerstellen.
Bekomme aber einfach nicht das gewünschte Ergebnis .
Zur Information :
---------------------
Ich möchte Daten von einem DBGrid2 zu einem anderen DbGrid1 überspielen/verschieben ( Mittels insert )
Hintergund _ Ich möchte Konaktdaten ( Ansprechpartner) mehren Adressen zuweisen.
Dafür habe ich folgende Tabellen :
STAMM_ADRESSEN_KONTAKT_VERKN_TBL
(
KONT_VERKN_ID int primary key auto_increment,
XADRESS_ID INT,
XUSER_ID Integer,
X_ADR_USER_Verkn_Index VarChar(45)
STAMM_ADRESSEN_HAUPTGUPPE
ID = PK
ADRESS_ID = Integer
STAMM_ADRESSEN
ID PK
FirmenName1 = Varchar(30)
usw.
STAMM_ADRESSEN_HAUPTGRUPPE_VERKNUEPF_TBL
VERKN_ID int primary key auto_increment,
Firmen_HG_ID Integer; = PK aus STAMM_ADRESSEN_HAUPTGUPPE
ADRESS_ID Integer = PK aus STAMM_ADRESSEN
VIEW v_STAMM_ADRESSEN_HAUPTGRUPPE AS
select
hg.Firmen_HG_ID,
hg.Firmen_HG_Name,
hg.Firmen_HG_Beschreibung1,
hg.Firmen_HG_Beschreibung2,
a.*
from
stamm_Adressen a, STAMM_ADRESSEN_HAUPTGRUPPE_VERKNUEPF_TBL hgvk, STAMM_ADRESSEN_HAUPTGRUPPE hg
where
hgvk.Adress_Id = a.ID and hg.Firmen_HG_ID = hgvk.Firmen_HG_ID and a.aktiv = 1
order by a.ID;
CREATE VIEW v_STAMM_ADRESSEN_KONTAKT AS (diese view befüllt DBGRID1)
SELECT
x.KONT_VERKN_ID,
x.XADRESS_ID,
k.*,
a.FirmenName1,
a.FirmenName2,
a.Strasse1,
a.Strasse2,
a.Land,
a.Plz,
a.Ort,
a.Tel as Firma_Tel
FROM
STAMM_ADRESSEN_KONTAKT_VERKN_TBL x, STAMM_ADRESSEN a, STAMM_ADRESSEN_KONTAKT k
WHERE x.XADRESS_ID = a.ID and x.XUSER_ID = k.Kontakt_ID and k.Aktiv = 1
ORDER BY
Kontakt_ID;
Das hier ist mein Versuch das DBGrid2 nach Selektierung zubefüllen und die
selectieren Daten verschwinden zulassen.
s := 'SELECT '
+ ' E.Kontakt_ID,'
+ ' P.*'
+ ' FROM'
+ ' v_stamm_adressen_hauptgruppe P'
+ ' LEFT OUTER JOIN v_stamm_adressen_kontakt E ON'
+ ' E.XADRESS_ID = P.ID'
+ ' WHERE'
+ ' E.XADRESS_ID IS NULL and P.Firmen_HG_ID = '''+Firmen_HG_ID.text+''' ';
SQLQuery2.close;
SQLQuery2.SQL.Clear;
SQLQuery2.SQL.Add(s);
SQLQuery2.open;
DBGrid2.refresh;
Das funktioniert nur mit einem Konakt einer Firma.
Heisst. Für jeden weiteren Konakt der gleichen Firma bleiben nur die nicht selektieren Firmen überig.
Ich möchte aber bei jedem weiterem Konakt, dass alle Firmen wieder angezeigt werden :-(
Vll wäre es besser wenn man eine Zischentabelle befüllt. So könnte ich mir zumindestens etwas behelfen.
Ein funktionirendes SQL Statement wäre aber wohl die bessere Wahl.
Hört sich wohl alles ziemlich konfuse an ich weiss:
Wäre schön wenn ihr mir sagen würdet wie ich es besser beschreiben soll/kann
Bin für jede Antwort dankbar !
Lg Bernie
ich bin neu hier und hoffe, dass mir jemand helfen kann.
Ich versuche seit Tagen verzeifelt eine MySQl Abfrage zuerstellen.
Bekomme aber einfach nicht das gewünschte Ergebnis .
Zur Information :
---------------------
Ich möchte Daten von einem DBGrid2 zu einem anderen DbGrid1 überspielen/verschieben ( Mittels insert )
Hintergund _ Ich möchte Konaktdaten ( Ansprechpartner) mehren Adressen zuweisen.
Dafür habe ich folgende Tabellen :
STAMM_ADRESSEN_KONTAKT_VERKN_TBL
(
KONT_VERKN_ID int primary key auto_increment,
XADRESS_ID INT,
XUSER_ID Integer,
X_ADR_USER_Verkn_Index VarChar(45)
STAMM_ADRESSEN_HAUPTGUPPE
ID = PK
ADRESS_ID = Integer
STAMM_ADRESSEN
ID PK
FirmenName1 = Varchar(30)
usw.
STAMM_ADRESSEN_HAUPTGRUPPE_VERKNUEPF_TBL
VERKN_ID int primary key auto_increment,
Firmen_HG_ID Integer; = PK aus STAMM_ADRESSEN_HAUPTGUPPE
ADRESS_ID Integer = PK aus STAMM_ADRESSEN
VIEW v_STAMM_ADRESSEN_HAUPTGRUPPE AS
select
hg.Firmen_HG_ID,
hg.Firmen_HG_Name,
hg.Firmen_HG_Beschreibung1,
hg.Firmen_HG_Beschreibung2,
a.*
from
stamm_Adressen a, STAMM_ADRESSEN_HAUPTGRUPPE_VERKNUEPF_TBL hgvk, STAMM_ADRESSEN_HAUPTGRUPPE hg
where
hgvk.Adress_Id = a.ID and hg.Firmen_HG_ID = hgvk.Firmen_HG_ID and a.aktiv = 1
order by a.ID;
CREATE VIEW v_STAMM_ADRESSEN_KONTAKT AS (diese view befüllt DBGRID1)
SELECT
x.KONT_VERKN_ID,
x.XADRESS_ID,
k.*,
a.FirmenName1,
a.FirmenName2,
a.Strasse1,
a.Strasse2,
a.Land,
a.Plz,
a.Ort,
a.Tel as Firma_Tel
FROM
STAMM_ADRESSEN_KONTAKT_VERKN_TBL x, STAMM_ADRESSEN a, STAMM_ADRESSEN_KONTAKT k
WHERE x.XADRESS_ID = a.ID and x.XUSER_ID = k.Kontakt_ID and k.Aktiv = 1
ORDER BY
Kontakt_ID;
Das hier ist mein Versuch das DBGrid2 nach Selektierung zubefüllen und die
selectieren Daten verschwinden zulassen.
s := 'SELECT '
+ ' E.Kontakt_ID,'
+ ' P.*'
+ ' FROM'
+ ' v_stamm_adressen_hauptgruppe P'
+ ' LEFT OUTER JOIN v_stamm_adressen_kontakt E ON'
+ ' E.XADRESS_ID = P.ID'
+ ' WHERE'
+ ' E.XADRESS_ID IS NULL and P.Firmen_HG_ID = '''+Firmen_HG_ID.text+''' ';
SQLQuery2.close;
SQLQuery2.SQL.Clear;
SQLQuery2.SQL.Add(s);
SQLQuery2.open;
DBGrid2.refresh;
Das funktioniert nur mit einem Konakt einer Firma.
Heisst. Für jeden weiteren Konakt der gleichen Firma bleiben nur die nicht selektieren Firmen überig.
Ich möchte aber bei jedem weiterem Konakt, dass alle Firmen wieder angezeigt werden :-(
Vll wäre es besser wenn man eine Zischentabelle befüllt. So könnte ich mir zumindestens etwas behelfen.
Ein funktionirendes SQL Statement wäre aber wohl die bessere Wahl.
Hört sich wohl alles ziemlich konfuse an ich weiss:
Wäre schön wenn ihr mir sagen würdet wie ich es besser beschreiben soll/kann
Bin für jede Antwort dankbar !
Lg Bernie