Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Mehere Tabellen und Join - Schreibschutz? (https://www.delphipraxis.net/103884-mehere-tabellen-und-join-schreibschutz.html)

Stern 23. Nov 2007 15:03

Datenbank: InterBase • Zugriff über: BDE

Mehere Tabellen und Join - Schreibschutz?
 
Hallo zusammen,

ich habe mal wieder eine kleine Frage bezüglich der Arbeit mit mehreren Tabellen. Ich habe eine Query-Komponente, eine DB-Komponente und die DataSource. Nun habe ich die Verbindung zur DB hergestellt und trage im SQL-Feld der Query ein:

SQL-Code:
select * from tabelle1,tabelle2;
Ich habe Request Live auf true und möchte nun die query.active auf true setzen. Nun bekomme ich die Fehlermeldung, dass die Tabelle schreibgeschützt wäre... :roll:
Ich kann sie aber über die Konsole nach Lust und Laune verändern. Ich häng mal wieder und hab ein riesen Brett vor dem Kopf. Kann mir das mal jemand wegnehmen?

Liebe Grüße
Steffi

mkinzler 23. Nov 2007 15:05

Re: Mehere Tabellen und Join - Schreibschutz?
 
Deine Abfrage (Cross-Join) erzeugt auch einen nich updatebare Datenmenge

RavenIV 23. Nov 2007 15:14

Re: Mehere Tabellen und Join - Schreibschutz?
 
Du schreibst besser:

SQL-Code:
Select * From tabelle1, tabelle2
Where tabelle1.irgendwas = tabelle2.wasanderes
Also meistens wird ein where benötigt.

mkinzler 23. Nov 2007 15:15

Re: Mehere Tabellen und Join - Schreibschutz?
 
Oder einen expliziten Join

RavenIV 23. Nov 2007 15:17

Re: Mehere Tabellen und Join - Schreibschutz?
 
Was willst Du eigentlich mit dem SQL-Statement erreichen?

Daten aus beiden Tabellen holen?
Irgendwas von tabelle1 in tabelle2 schreiben?
oder was?

Stern 23. Nov 2007 15:19

Re: Mehere Tabellen und Join - Schreibschutz?
 
Meine Güte,
ich habe noch nie ein so gut betreutes Forum erlebt wie hier... :shock: Wahnsinn...

Zu meiner Frage: mit dem hier:
SQL-Code:
Select * From tabelle1, tabelle2
Where tabelle1.irgendwas = tabelle2.wasanderes
mache ich doch dann einen Vergleich zweier werte, oder???

Wie kann ich denn einfach den Inhalt beider Tabellen bekommen?
Sorry, ich weiß das solche Fragen unglaublich nerven...und ich weiß auch was das bedeutet: SQL-Manual anschauen... ;-)

Liebe Grüße
Steffi

RavenIV 23. Nov 2007 15:22

Re: Mehere Tabellen und Join - Schreibschutz?
 
Zitat:

Zitat von Stern
Wie kann ich denn einfach den Inhalt beider Tabellen bekommen?

Da wirst Du wohl an einem Join nicht vorbei kommen.

Relicted 23. Nov 2007 15:25

Re: Mehere Tabellen und Join - Schreibschutz?
 
die abfrage sollte das kartesische Produkt beider tabellen liefern... also theoretisch möglich die abfrage... der anwendungsfall dass das kartesische produkt gebraucht wird ist aus meiner sicht eher selten... eigentlich will man ja meist nur mehrere tabellen miteinander verknüpfen... wie wärs denn mit nem join?

SQL-Code:
select *
from tabelle1 t1
inner join tabelle2 t2 on t1.id = t2.tabelle1_id
gruß
reli

edit: wenn du uns vielleicht tabellenstruktur und gewünschtes ergebnis aufzeigst können wir dir hier sicher auch etwas besser helfen

mkinzler 23. Nov 2007 15:28

Re: Mehere Tabellen und Join - Schreibschutz?
 
Die beiden Tabellen stehen ja irgendwie in Relation

Also es besteht eine Master/Detail-Beziehung.

SQL-Code:
select
    <Feldliste Tab1>, <Feldliste Tab2>
from
    <Tab1> t1 join <Tab2> t2 on t2.<FK auf t1> = t1.<PK>;

Stern 23. Nov 2007 15:44

Re: Mehere Tabellen und Join - Schreibschutz?
 
Also entweder ich bin wirklich zu doof dafür, oder ich muss mich glaube ich nochmal eingehender mit den Grundlagen beschäftigen...
Ich habe folgendes Statement eingesetzt:

SQL-Code:
select
  KNR,
  KVORNAME,   
  KNACHNAME,
  KADRESSE,   
  KPLZ,
  KWOHNORT,
  RNUM,
  RBETRAG,
  RSTATUS,
  RDAT,
  RKUNDE
  select Kunden join Rechnungen on Rechnungen.RKUNDE = Kunden.Knr
Aber es besteht nun immer noch ein schreibschutz... :roll: In Tabelle Kunden ist KNR = PK und in Tabelle Rechnungen ist RNUM = PK und RKUNDE= FK...
Liebe Grüße
Steffi

DeddyH 23. Nov 2007 15:50

Re: Mehere Tabellen und Join - Schreibschutz?
 
Ersetz mal das 2. SELECT durch FROM ;)

Stern 23. Nov 2007 15:54

Re: Mehere Tabellen und Join - Schreibschutz?
 
oh, im Programm hab ich das mit FROM. Hier wohl schlecht kopiert... ;-)
Geht aber auch nich mit FROM....

Naja, trotzdem vielen Lieben Dank für eure Hilfen.--> Steffi ab zu SQL-TUTS... :)

Liebe Grüße
Steffi

Relicted 23. Nov 2007 15:56

Re: Mehere Tabellen und Join - Schreibschutz?
 
SQL-Code:
select K.KNR,
  K.KVORNAME,  
  K.KNACHNAME,
  K.KADRESSE,  
  K.KPLZ,
  K.KWOHNORT,
  R.RNUM,
  R.RBETRAG,
  R.RSTATUS,
  R.RDAT,

  from Kunden K
  inner join Rechnungen R on R.RKUNDE = K.Knr
nur nochmal zur auffrischung den allgemeinen sql aufbau (vereinfacht):

SQL-Code:
SELECT (spalte)
FROM (tabelle)
[ JOIN (tabelle) ON (bedingung) ....]
WHERE (bedingung)
[GROUP BY (spalte)]
oder nochmal die basics zum wiedereinsteigen :-) hier

gruß
reli

RavenIV 23. Nov 2007 16:03

Re: Mehere Tabellen und Join - Schreibschutz?
 
Solltest Dir vielleicht dann den Cross Join anschauen.
Zitat:

Cross join (Cartesian product)
Cross join, or the Cartesian product of two tables, can be defined as another (rather virtual) table that consists of all possible pairs of rows from the two source tables. Returning to our customer phone example in the nonequijoin section of this chapter, the cross join of the CUSTOMER and PHONE tables returns results very similar to what we've got on Figure 8-2 except it would also return the valid customer/phone combinations, excluded from the previously mentioned nonequijoin.

SQL99 standard syntax
This query will return all possible combinations of customer names and phone numbers by performing cross join of CUSTOMER and PHONE tables:

SELECT cust_name_s,
phone_phonenum_s
FROM customer CROSS JOIN
phone



Alle Zeitangaben in WEZ +1. Es ist jetzt 09:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz