anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Di 10 Jun, 2025 10:33

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Abfrage aus 2 Tables
BeitragVerfasst: Sa 26 Aug, 2006 22:59 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Fr 06 Jan, 2006 01:33
Beiträge: 459
Wohnort: Simmern
Geschlecht: Männlich
LoGD: http://www.morpheus-lotgd.de
Ich will, am Anfang des Moduls, daß auf 2 Table zugegriffen wird, und zwar im kompletten Modul, da ich die Werte aus beiden dort änder. Ich habe es jetzt so am Anfang stehen:
$this->bbcode_second_pass_code('', '
require_once "common.php";
require "preise.php";
$acctid=$session[user][acctid];
$sql = "SELECT * FROM uvw WHERE ownerid='$acctid'";
$result = db_query($sql);
$row = db_fetch_assoc($result);
$sql = "SELECT * FROM xyz WHERE ownerid='$acctid'";
$result = db_query($sql);
$row = db_fetch_assoc($result);
addcommentary();
page_header...
')
Geht das auf die Art, oder muß ich das anders schreiben? Da ich das ganze noch in 9 weiteren Modulen zu verwenden gedenke und bereits in 4 so stehen habe, wäre es mir nun wichtig zu wissen, wie es aussehen muß, um das, notfalls, noch zu änderen und bei den übrigen gleich richtig zu machen. :wink:

_________________
Ich bin das Land, meine Augen sind der Himmel, meine Glieder die Bäume, ich bin der Fels, die Wassertiefe. Ich bin nicht hier, um die Natur zu beherrschen oder sie auszubeuten. Ich bin selbst Natur.

(Hopi)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa 26 Aug, 2006 23:16 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Zuerst: DU überschreibst $row aus dem ersten Query mit dem aus dem zweiten Query.

Zweitens: es gibt auch eine andere Möglichkeit... Keine Garantie, ob das nun funktioniert:

$this->bbcode_second_pass_code('', 'SELECT
a.*,
b.*
FROM
`xyz` a
INNER JOIN
`qwertzu` b
USING(`ownerid`)
WHERE
a.`ownerid` = {$acctid}')

Das einzige Problem - Wenn Felder hier gleich heissen überschreiben die sich gegenseitig... ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa 26 Aug, 2006 23:27 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Fr 06 Jan, 2006 01:33
Beiträge: 459
Wohnort: Simmern
Geschlecht: Männlich
LoGD: http://www.morpheus-lotgd.de
Hmmm, ein Problem, und wenn ich es folgendermaßen am Seitenanfang schreibe:
$this->bbcode_second_pass_code('', '
require_once "common.php";
require "preise.php";
$acctid=$session[user][acctid];
$sql = "SELECT * FROM handelslager WHERE ownerid='$acctid'";
$result = db_query($sql);
while($row = db_fetch_assoc($result)) {
$row['lagerstein'],
$row['lagerholz'],
}
$sql = "SELECT * FROM handelswaren WHERE ownerid='$acctid'";
$result = db_query($sql);
$row = db_fetch_assoc($result);
$row['holz'],
$row['bretter'],
$row['rohstein'],
$row['baustein'],
}
addcommentary();
page_header...
')
Dann sollte es doch theoretisch gehen, das ich die Felder im gesamten Modul immer wieder ändern kann, da ich die Felder, die ich ändern will, ja vorher klar definiere, oder denke ich da jetzt falsch?

_________________
Ich bin das Land, meine Augen sind der Himmel, meine Glieder die Bäume, ich bin der Fels, die Wassertiefe. Ich bin nicht hier, um die Natur zu beherrschen oder sie auszubeuten. Ich bin selbst Natur.

(Hopi)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa 26 Aug, 2006 23:33 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Wenn du es so machen willst, wie du, dann gibt es einen ganz leichten Trick: Variable umbennen oO

[php]$sql = "SELECT * FROM uvw WHERE ownerid='$acctid'";
$result = db_query($sql);
$row = db_fetch_assoc($result);
$sql2 = "SELECT * FROM xyz WHERE ownerid='$acctid'";
$result2 = db_query($sql);
$row2 = db_fetch_assoc($result); [/php]

Wenn du es so machst wie ich, dann ist es besser, wenn du die Felder aufzählst (Und nebenbei könntest du sie sogar noch umbennen ^^):

$this->bbcode_second_pass_code('', 'SELECT
a.`lagerstein`, a.`lagerholz`,
b.`holz`, b.`bretter`, b.`rohstein`, b.`baustein`
FROM
`handelslager` a
INNER JOIN
`handelswaren` b
USING(`ownerid`)
WHERE
a.`ownerid` = {$acctid}')


Dein Versuch oben war falsch. Gäbe einen Parse-Error ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa 26 Aug, 2006 23:41 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Fr 06 Jan, 2006 01:33
Beiträge: 459
Wohnort: Simmern
Geschlecht: Männlich
LoGD: http://www.morpheus-lotgd.de
Ahja, vielen Dank Eli, Du hast mir so eben den [Stoffwechselendproduktausscheidungsorgan] bei einem Megaprojekt gerettet :lol: und ich hab noch was dabei gelernt, das freut mich am meisten :)
Zwei Fragen hab ich allerdings noch:
1. Mag dumm klingen, aber, sehe ich das richtig, daß Du a und b nur zur Verdeutlichung dazu geschrieben hast?
2. Wenn ich aus 2 tables 1 Table machen würde, wäre der monumental groß, im Moment hat der handelslager 16 Einträge, der handelswaren 20, da 2 weg fallen würden (ownerid und ownername wären sonst doppelt) wären daß dann 34 Einträge, ist das nicht zuviel und bremst das System? Das war mein Grundgedanke, aus einem zwei zu machen...denn wenn ich das wieder falsch gesehen habe, mache daraus wieder einen table und änder die bestehenden Module dahin um, denn dann hab ich den ganzen Trouble nicht ;) :wink:

Und nochmal vielen Dank für die Lektion in SQL, um so mehr ich lerne, um so besser werde ich... :wink:

_________________
Ich bin das Land, meine Augen sind der Himmel, meine Glieder die Bäume, ich bin der Fels, die Wassertiefe. Ich bin nicht hier, um die Natur zu beherrschen oder sie auszubeuten. Ich bin selbst Natur.

(Hopi)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 27 Aug, 2006 01:08 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Morpheus hat geschrieben:
Ahja, vielen Dank Eli, Du hast mir so eben den [Stoffwechselendproduktausscheidungsorgan] bei einem Megaprojekt gerettet :lol: und ich hab noch was dabei gelernt, das freut mich am meisten :)
Zwei Fragen hab ich allerdings noch:
1. Mag dumm klingen, aber, sehe ich das richtig, daß Du a und b nur zur Verdeutlichung dazu geschrieben hast?
2. Wenn ich aus 2 tables 1 Table machen würde, wäre der monumental groß, im Moment hat der handelslager 16 Einträge, der handelswaren 20, da 2 weg fallen würden (ownerid und ownername wären sonst doppelt) wären daß dann 34 Einträge, ist das nicht zuviel und bremst das System? Das war mein Grundgedanke, aus einem zwei zu machen...denn wenn ich das wieder falsch gesehen habe, mache daraus wieder einen table und änder die bestehenden Module dahin um, denn dann hab ich den ganzen Trouble nicht ;) :wink:

Und nochmal vielen Dank für die Lektion in SQL, um so mehr ich lerne, um so besser werde ich... :wink:


Zu 1: Nein. Das ist diesmal keine veranschaulichung sondern "Variablen". Um Schreibplatz zu sparen hab ich nach "FROM `handelslager`" einen Leerschlag, gefolgt von einem a hingemacht. a ist nun ein Verweis auf handelslager. Genauso ist es mit b... Die Faulheit treibt dazu ;)

Zu 2: Wie du magst. Gut sortiert ist es vielleicht besser als alles in eine Tabelle gedrückt... ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 27 Aug, 2006 01:31 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Fr 06 Jan, 2006 01:33
Beiträge: 459
Wohnort: Simmern
Geschlecht: Männlich
LoGD: http://www.morpheus-lotgd.de
Vielen Dank für die Aufklärung, denn da wäre beides möglich gewesen...sowohl zur Erläuterung, als auch so, wie es gedacht war von Dir. :)

Ja, gut sortiert ist mir eigentlich auch lieber, aber um ehrlich zu sein, übersichtlicher, was die Programmierung angeht, ist für mich dan schon 1 Riesentable und wenn das keine Auswirkung auf die Geschwindigkeit hat, dann neige ich eindeutig dazu.
Ich hab grade mal die Datenbank durchgesehen, der längste table, neben Acounts, ist Mounts, wobei meiner länger wäre als zweit- und kürzer als erstgenannter. Ich denke, dahin werde ich auch ausweichen und die bestehenden dahingehend nochmal modifizieren.
Mit der Hilfestellung jetzt kann ich dann ruigen Gewissens weiter programmieren, besten Dank. :wink:

Und sollte ich dann wirklichmal in die Verlegenheit zweier table kommen, die ich in einem Modul mehrfach änder, werde ich auf Deine Lösung zurück greifen... ;)

P.S.EDIT: Du hast Post Eli... ;)

_________________
Ich bin das Land, meine Augen sind der Himmel, meine Glieder die Bäume, ich bin der Fels, die Wassertiefe. Ich bin nicht hier, um die Natur zu beherrschen oder sie auszubeuten. Ich bin selbst Natur.

(Hopi)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 15 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum