This is a guide about travelling from Poland to Czech Republic by train: kolej.one.pl/~halski/cestovani_vlakem.html
It is in Polish and it hasn't been updated for quite a long time (so the train connections listed there can be no more up to date), but it has some tips about how to get to Prague from Poland by train for a low price, and it may be still useful, also travelling in the reverse direction.
Going by a normal long-distance train from Czech Republic to Poland, it might be more affordable to buy a Czech ticket to a border point (not to a station, to a border). From what it's written on this website, in Czech Republic it's normal to sell a train ticket to a state border and there shouldn't be any problem with that (it's problematic in Poland), although you can't do it online. Then you have two options:
- if you happen to be in Poland in the meantime - you may go to a ticket counter at the station, show the Czech ticket valid to the border, and they should issue the ticket from the border to any station in Poland (in practice they may make problems, as far as I know, in such a situation they should issue a separate ticket and a separate seat reservation since they are unable to reserve a seat from a point not being a station, but it might have chagned); remember that for most of the long-distance train connections in Poland (operated by the PKP-Intercity company) it's cheaper to buy a train ticket possibly early, at least more than 2 weeks in advance
- if you don't happen to be in Poland - buy a ticket from the first station after crossing the border to the target station online on intercity.pl - when you are on the train, after crossing the border, you must find the Polish train conductor and tell him you need a ticket from the border point to the first station (only in case of D/TLK trains, in case of EC/EIC you don't have to look for him, you just stay in your seat and wait); if you go from Poland to Czech Republic it usually works so that the price to the border point is the same as to the last station before (the ticket prices are defined for km ranges, for example the price is the same for the journeys at distances from 51 to 55 km) and when you tell the conductor, he will just extend your ticket to the border, I am not sure if it's possible to extend the ticket at the departure, but if not, then he will probably let you go anyway since it's complicated to issue a ticket from a border point, or in the worst case, he will issue a ticket from the border point to the first station and you will have to pay for it (and here the price is terrible - 48 PLN + maybe a 10 PLN service fee, although in my opinion the conductor shouldn't charge the service fee in such a case)
The problem with buying tickets online on intercity.pl is that it's impossible to buy there a single ticket if you want to change between trains somewhere in Poland. But it might still be cheaper to buy two separate tickets online in advance, if you cannot go to a ticket counter in Poland, than to buy a single ticket on the departure day.
- the third option is that you can buy a ticket for the whole route from the border to the target station (any in Poland) from the conductor after crossing the border, but buying the ticket on the departure day is usually more expensive than doing it in advance.
I don't think it will be cheaper to go to Wrocław by regional trains and then from Wrocław to Warsaw by long-distance ones since for a regional and a long-distance train in Poland you need to buy separate tickets, and the price for 1 km is in Poland always much lower if you buy a single ticket at a long distance. In other words - the difference in ticket prices between 1 km and 21 km is much bigger than between 201 km and 221 km. The same might be with a bus to Wrocław and train to Warsaw, although you just need to check it.
If you want to cross the border on foot (although it will rather not be cheaper than just buying separate tickets to and from the border), go from Prague to Cesky Tesin, walk to the Polish part of this town (Cieszyn) and get a train to Warsaw from there. The problem is that there is no direct trains from Cieszyn to Warsaw, you will have to catch a regional train (of the Koleje Śląskie company) and change from it to a long-distance train to Warsaw, so you will need two separate tickets for them, which is usually more expensive.
Looking at the prices if you buy tickets from/to the border:
I cannot check the price to the border, but the price for Praha to Ostrava (the last station before the border) for tomorrow is 295 CZK (=11 EUR) and for some trains there is a special offer available with the price 190 CZK (=7 EUR). I don't know if the special offer ticket can be bought also to the border, if not, you should buy a ticket to Ostrava in the special offer and from Ostrava to the border as a normal ticket and it will be definitely cheaper - the ticket prices in Czech Republic are based on a constant fare for 1 km, not on km ranges like in Poland. Checked at: cd.cz/eshop/
For tickets bought in advance (checked for the beginning of April) the standard price is 279 CZK (=10 EUR).
One of the trains (the night one) crosses the border in a different place and the last station in the Czech Republic is Bohumin. There are some incosistencies between the Polish and Czech timetable, probably caused by the recent fire at the station in Bohumin which destroyed all the station equipement (normally they were switching some carriages between trains there, now they had to move this operation to Ostrava), but the price for tomorrow is 309 CZK (=11.5 EUR).
The ticket from the first station after the border (Chałupki, except for the night train, where it's Zebrzydowice) costs 118 PLN (=27 EUR) for tomorrow; for the beginning of April it's only 83 PLN (=19 EUR). Anyway it's quite expensive, mainly because it's a train of the EIC (Express Intercity) class. In TLK or IC it would be cheaper. For the night train, from Zebrzydowice, it's only 58.5 PLN (=13.5 EUR) since it's TLK.
You may go by EIC to the first station where you can change to TLK.
You have again two options:
1. Go by the EIC to Katowice. A ticket from Chałupki to Katowice is 59 PLN (=13.5 EUR) for tomorrow, bought in advance it will be of course cheaper. Then change in Katowice to a TLK or IC train to Warsaw - the price for tomorrow is about 60 PLN (=14 EUR), but in one of the EIP trains (so theoretically in the most comfortable train class) it's only 50 PLN (=11.5 EUR) - you must always check if there is no such cases.
2. Leave the train from Praha in Chałupki, change to a regional train (Koleje Śląskie company), go by this train to Katowice and change there. It costs 16.20 PLN (=4 EUR). The problem is that for the section from the border to Chałupki you may have to buy a ticket for almost 50 PLN... Unless noone will be checking the tickets between the border and Chałupki.
So the last option. Cheap, safe and without extra walking, although with some train changes.
1. Go by train from Praha to Bohumin. You buy a single ticket for 309 CZK (=11.5 EUR). For some trains (which need reservation) it's 344 CZK (=13 EUR). You will have to change between trains once - in Ostrava.
2. From there you catch a Polish regional train to Katowice. Company Koleje Śląskie. There are four such connections in a day, one of them needs a train change in Chałupki. You buy a special cross-border ticket from Bohumin to Chałupki for 16 CZK (=60 eurocent) at a ticket counter in Czech Republic or probalby 2 PLN (=45 eurocent) from the conductor on the train.
3. You buy from the conductor on the train a ticket from Chałupki to Katowice. For 16.20 PLN (=4 EUR). This is still the same train.
4. You buy, at best - as early as it's possible (basically, it's possible a month in advance), on intercity.pl - a ticket for a train from Katowice to Warsaw, so that you can safely catch it using the connection mentioned in the points before. The prices begin from 42 PLN (=10 EUR), but you must choose one that is cheap (usually TLK or IC, but there are also some cheap EIP's).
The time is about 8 hours, the price about 25 euro. You won't do it cheaper by train, unless you don't use any long-distance trains in Poland, only regional ones, but it will be much longer and with many train changes (about 14 hours and 6 changes). Is it worth that? If you can buy in advance the ticket for 27 euro for the direct train, then not. You can do it online on the Czech Railways webpage.
Sorry for such a long post.
If you can buy in advance the ticket for 27 euro for the direct train, then not.
Except for cases when:
- you travel in a group, even of a few people; then it's cheap to have a separate ticket for the Czech section, since Czech Railways have an extensive system of discounts for groups
- you are a student and either you have ISIC (and study outside of Poland), or you have a student ID of a Polish school (and you study in Poland), then you are entitled to a 51% discounts on Polish trains and it's good to have a separate ticket for the Polish section
Both discounts do not apply with an international ticket.