| | | | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | ||
| Moderator und Wett-König | Zitat:
Wie Agrajag schon sagte ist das Tabellen-Design nicht sinnvoll. Für diesen Anwendungsfall arbeitet der clevere Entwickler mit 3 Tabellen: 1) benutzer 2) events 3) ass_benutzer_events Tabelle 3 speichert jeweils den PK des Benutzers und den PK des Events. Somit kannst du durch mehrere Einträge in ass_benutzer_events eine 1:n, n:1 und n:m-Beziehung zwischen Benutzer und Event aufbauen und mit JOINs sauber abfragen. Das Keyword "ass" steht übrigens für "Assoziation"!
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
| | |
| | |
| Moderator und Wett-König | Hallo Matthiasnet, ich hab in meinem Post bereits erläutert, dass sich die Abfrage auf ein Feld mit dem Inhalt Code: 1,2,3,4,56,1345,4356 Liegt folgendes Tabellen-Design zu Grunde Code: Tabelle benutzer: -------------------- ID | Usename | ... 1 | christian | ... 2 | ... | ... Tabelle events: -------------------- ID | Name | ... 1 | Fußball | ... 2 | ... | ... Tabelle ass_benutzer_events: ---------------------------------- ID | User | Event 1 | 1 | 1 2 | 1 | 2 3 | 2 | 1 Code: SELECT * FROM events INNER JOIN ass_benutzer_events ON benutzer.ID = ass_benutzer_events.Event INNER JOIN benutzer ON ass_benutzer_events.User = benutzer.ID WHERE benutzer.ID = '$ID';
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | |
| Moderator und Wett-König | Hallo Matthiasnet, dein Tabellen-Layout ist offensichtlich anders wie mein Code. Es war eben nur ein Beispiel und du musst mein Statement eben an eine Anforderungen anpassen. Die Meldung sagt aus, dass es keine Spalte "id" in der Tabelle "benutzer" gibt. Du musst diesen Teil mit der gültigen PK-Spalte aus deiner Tabelle "benutzer" füllen. Poste zur Sicherheit nochmal das komplette Statement und dein jetziges Tabellen-Layout (mit den 3 Tabellen).
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | |
| Moderator und Wett-König | Hallo Matthiasnet, ich habe das ganze nochmal für dich getestet. Folgenes ist als Test bei mir eingespielt worden: Code: DROP TABLE IF EXISTS `ass_benutzer_events`; CREATE TABLE IF NOT EXISTS `ass_benutzer_events` ( `ID` int(11) NOT NULL auto_increment, `User` int(11) NOT NULL default '0', `Event` int(11) NOT NULL default '0', PRIMARY KEY (`ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ; INSERT INTO `ass_benutzer_events` (`ID`, `User`, `Event`) VALUES (1, 1, 1), (2, 1, 2), (4, 1, 4), (5, 2, 2), (6, 2, 3), (7, 8, 1), (8, 8, 4), (9, 7, 3), (10, 7, 4), (11, 6, 4), (12, 6, 1); DROP TABLE IF EXISTS `benutzer`; CREATE TABLE IF NOT EXISTS `benutzer` ( `id` int(11) NOT NULL auto_increment, `anrede` text NOT NULL, `username` text NOT NULL, `vorname` text NOT NULL, `nachname` text NOT NULL, `bday_tag` int(2) NOT NULL default '0', `bday_monat` int(2) NOT NULL default '0', `bday_jahr` int(4) NOT NULL default '0', `address` text NOT NULL, `address2` text NOT NULL, `plz` text NOT NULL, `ort` text NOT NULL, `mail` text NOT NULL, `land` text NOT NULL, `password` text NOT NULL, `status` int(1) NOT NULL default '0', `favouriten` longtext NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ; INSERT INTO `benutzer` (`id`, `anrede`, `username`, `vorname`, `nachname`, `bday_tag`, `bday_monat`, `bday_jahr`, `address`, `address2`, `plz`, `ort`, `mail`, `land`, `password`, `status`, `favouriten`) VALUES (1, '', 'christian', '', '', 0, 0, 0, '', '', '', '', '', '', '', 0, ''), (2, '', 'Thomas', '', '', 0, 0, 0, '', '', '', '', '', '', '', 0, ''), (3, '', 'Markus', '', '', 0, 0, 0, '', '', '', '', '', '', '', 0, ''), (4, '', 'Andreas', '', '', 0, 0, 0, '', '', '', '', '', '', '', 0, ''), (5, '', 'Martina', '', '', 0, 0, 0, '', '', '', '', '', '', '', 0, ''), (6, '', 'Gabi', '', '', 0, 0, 0, '', '', '', '', '', '', '', 0, ''), (7, '', 'Kerstin', '', '', 0, 0, 0, '', '', '', '', '', '', '', 0, ''), (8, '', 'Tamara', '', '', 0, 0, 0, '', '', '', '', '', '', '', 0, ''); DROP TABLE IF EXISTS `events`; CREATE TABLE IF NOT EXISTS `events` ( `id` int(11) NOT NULL auto_increment, `username` varchar(199) NOT NULL default '', `century` int(2) unsigned zerofill NOT NULL default '00', `years` int(2) unsigned zerofill NOT NULL default '00', `month` varchar(30) NOT NULL default '', `day` int(2) unsigned zerofill NOT NULL default '00', `hour` int(2) unsigned zerofill NOT NULL default '00', `minute` int(2) unsigned zerofill default '00', `titel` varchar(199) NOT NULL default '', `beschreibung` longtext NOT NULL, `datei1` varchar(199) NOT NULL default '', `datei2` varchar(199) NOT NULL default '', `datei3` varchar(199) NOT NULL default '', `datei4` varchar(199) NOT NULL default '', `datei5` varchar(199) NOT NULL default '', `status` varchar(199) NOT NULL default '', `privat_user` longtext NOT NULL, `klicks` int(11) NOT NULL default '0', `kategorie` varchar(199) NOT NULL default '', `link_melden` varchar(10) NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; INSERT INTO `events` (`id`, `username`, `century`, `years`, `month`, `day`, `hour`, `minute`, `titel`, `beschreibung`, `datei1`, `datei2`, `datei3`, `datei4`, `datei5`, `status`, `privat_user`, `klicks`, `kategorie`, `link_melden`) VALUES (1, '', 00, 00, '', 00, 00, 00, 'Erstes Event', '', '', '', '', '', '', '', '', 0, '', ''), (2, '', 00, 00, '', 00, 00, 00, 'Zweites Event', '', '', '', '', '', '', '', '', 0, '', ''), (3, '', 00, 00, '', 00, 00, 00, 'Drittes Event', '', '', '', '', '', '', '', '', 0, '', ''), (4, '', 00, 00, '', 00, 00, 00, 'Viertes Event', '', '', '', '', '', '', '', '', 0, '', ''); Code: SELECT events.titel FROM events INNER JOIN ass_benutzer_events ON events.ID = ass_benutzer_events.Event INNER JOIN benutzer ON ass_benutzer_events.User = benutzer.id WHERE benutzer.id = '1' Code: Erstes Event Zweites Event Viertes Event
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Tabelle von anderer Website in eigene übernehmen (+aktualisieren) | Softyx | PHP Tipps 2008 | 31 | 07.07.2008 10:16 |
| SQL-Abfrage mit Wert aus anderer Tabelle füllen | maeck | Datenbanken | 2 | 25.07.2007 20:36 |
| ORDER BY ... aus anderer Tabelle? | CHRIS | Datenbanken | 26 | 04.05.2007 20:24 |
| Mehrfach where in der ABfrage? | Kori | Datenbanken | 4 | 16.01.2007 16:46 |
| SELECT WHERE datetime abfrage - Optimierung | mrSpok | Datenbanken | 15 | 23.03.2006 19:08 |
| WHERE abfrage nach Datum | Datenbanken | 2 | 06.03.2006 16:42 | |
| WHERE Falsche Abfrage? Kein MySQL Fehler | PHP Tipps 2005-2 | 10 | 30.09.2005 10:43 | |
| Nach MySQL abfrage noch WHERE ? | atom-dragon | PHP Tipps 2005-2 | 6 | 12.06.2005 04:21 |
| Tabellenenum aus anderer Tabelle | Datenbanken | 3 | 11.05.2005 10:07 | |
| Abfrage einer Tabelle aus SQL-Feld | Datenbanken | 9 | 05.03.2005 10:00 | |
| [Erledigt] Tabelle existiert, if Abfrage | Datenbanken | 9 | 15.02.2005 14:00 | |
| Abfrage mit id aus anderer Tabelle | suter | PHP Tipps 2004-2 | 15 | 16.12.2004 14:25 |
| [Erledigt] SELECT * FROM tabelle WHERE id 'zwischen' 10 AND 20 | Datenbanken | 2 | 28.11.2004 14:37 | |
| Datensätze löschen für die kein Eintrag in anderer Tabelle.. | robo47 | Datenbanken | 7 | 10.11.2004 09:42 |
| Verweis nach id-Vorgabe aus anderer Tabelle "ergänzen&a | Heart | PHP Tipps 2004 | 2 | 28.06.2004 08:02 |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| where von anderer tabelle, sql abfrage where aus anderer tabelle, insert into in bestimmtes feld der tabelle mit id, where abfrage aus anderer tabelle, create table aus anderer tabelle |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.