Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

kann ich abfragen auf 2 Tables direkt kombinieren zu einer ausgabe ??

Empfohlene Antworten

Veröffentlicht

hmmm,

irgendwie viel mir kein besser Topictitel ein, also folgendes Problem :

Ich bin dabei ein kleine Bulletin Board zu coden um ein bischen php und mysql zu üben und nun stehe ich vor einem kleinen Problem das ich zwar umständlich selber lösen kann aber mich frage ob es nicht einfacher geht, also ich habe zwei Tabellen, in einer stehen die topicbeiträge drin und eine da stehen die Usernamen/pseudonyme/etc. drin.


$query = "CREATE TABLE user (erstellerid INT not null AUTO_INCREMENT, username VARCHAR (50) not null , pseudonym VARCHAR (15) not null , email VARCHAR (35) not null , homepage VARCHAR (40) , passwort VARCHAR (10) not null , status INT DEFAULT '1' not null , PRIMARY KEY (erstellerid), UNIQUE (pseudonym))";

Dies ist die Usertabelle.

$query = "CREATE TABLE topicbeitraege (tid INT NOT NULL, eid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, beitrag TEXT NOT NULL, erstellerid INT NOT NULL, datum DATE NOT NULL, uhrzeit TIME NOT NULL)";

Dies ist die Topicbeitraegetabelle So und nun möchte ich mit zum beispiel alle Topicbeiträge ausgeben lassen die tid (topicid) 1 haben.

SELECT * from topicbeitraege WHERE tid = 1 ;

wenn ich dies nun mit der der phpschleife

if ($db)

             {  mysql_select_db($dbname,$db);

                $query = 'SELECT * FROM topicbeitreage WHERE tid = 1';

                $result = mysql_query($query,$db);

                if ($result)

                   {   $number = mysql_num_rows($result);

                       echo '<br><br>';

                       echo '<TABLE BORDER=1>';

                       while ($row = mysql_fetch_array($result, MYSQL_ASSOC))

                         { echo '<tr><td>';

                           echo implode('<td>',$row);

                           echo '</tr>';

                         }

                       echo '</TABLE>';

                   }

alles ausgebe dann wird ja die erstellerid ausgegeben, was aber nicht so schön ist denn ich will ja eigentlich das pseudonym in der Liste haben, da die erstellerid ja der Primary Key der Usertabelle ist wollte ich mal fragen ob man dies direkt von SQL oder php ersetzen lassen kann, also ein SQL query der direkt anhand der erstellerid das pseudonym ermittelt und es anstatt der erstellerid ausgibt. Denn das wäre dann recht komfortabel.

Meine Methode ist es nämlich zuerst die ganzen topics raus zu suchen, aus diesen dann die erstellerid's raus zu suchen und diese dann in der Usertabelle abzufragen und auszugeben, das sind dann massenhaft SQL Abfragen und das belastet dann doch die Datenbank wenn die Topics eine gewisse länge haben.

Also gibts da was, ich hoffe ich hab mein Problem klar dagelegt.

SELECT tb.*, us.username from topicbeitraege tb, user us WHERE tb.tid = 1 AND tb.erstellerid = us.erstellerid;

die abfrage bringt dir deinen gewünschten effekt.

einfach die beiden tabellen nach FROM schreiben

us und tb sind hierbei nur alias-namen weil in beiden tabellen erstellerid vor kommt

mfg andi

wow,

danke , da wäre ich nie drauf gekommen glaub ich. Was ich nicht ganz gepeilt hab ist das tb.* was bedeutet das ? das alle spalten der tb Tabelle angezeigt werden ?

jepp so isses....

mfg andi

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.